ur-agent 1.57.0 → 1.57.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js CHANGED
@@ -57310,6 +57310,7 @@ var init_kimiToolCalls = __esm(() => {
57310
57310
  // src/services/api/ollama.ts
57311
57311
  var exports_ollama = {};
57312
57312
  __export(exports_ollama, {
57313
+ toOllamaChatRequest: () => toOllamaChatRequest,
57313
57314
  mergeToolCalls: () => mergeToolCalls,
57314
57315
  isOllamaCloudModel: () => isOllamaCloudModel2,
57315
57316
  getOllamaRequestTimeoutMs: () => getOllamaRequestTimeoutMs,
@@ -57497,7 +57498,7 @@ function toOllamaChatRequest(params, stream4, capabilities) {
57497
57498
  model: params.model,
57498
57499
  messages: [
57499
57500
  systemMessage,
57500
- ...messagesToOllama(params.messages, modelCapabilityEnabled(capabilities, "vision"))
57501
+ ...messagesToOllama(params.messages, modelCapabilityEnabled(capabilities, "vision"), params.model)
57501
57502
  ].filter((message) => message.role === "tool" || message.content.trim() !== "" || (message.images?.length ?? 0) > 0 || (message.tool_calls?.length ?? 0) > 0),
57502
57503
  stream: stream4,
57503
57504
  ...tools.length > 0 ? { tools } : {},
@@ -57543,7 +57544,7 @@ function systemToText(system) {
57543
57544
 
57544
57545
  `);
57545
57546
  }
57546
- function messagesToOllama(messages, supportsVision) {
57547
+ function messagesToOllama(messages, supportsVision, model = "") {
57547
57548
  const result = [];
57548
57549
  const toolNamesById = new Map;
57549
57550
  for (const message of messages) {
@@ -57592,11 +57593,19 @@ function messagesToOllama(messages, supportsVision) {
57592
57593
  break;
57593
57594
  case "tool_result": {
57594
57595
  const toolName = toolNamesById.get(block.tool_use_id) ?? block.tool_use_id;
57596
+ const split = splitToolResultContent(block.content);
57597
+ const note = describeToolResultImages(split.images.length, toolName, supportsVision, model);
57595
57598
  toolMessages.push({
57596
57599
  role: "tool",
57597
- content: contentBlockToText(block.content),
57600
+ content: [split.text, note].filter(Boolean).join(`
57601
+ `),
57598
57602
  tool_name: toolName
57599
57603
  });
57604
+ if (supportsVision) {
57605
+ for (const image of split.images) {
57606
+ images.push(image);
57607
+ }
57608
+ }
57600
57609
  break;
57601
57610
  }
57602
57611
  case "image":
@@ -58255,6 +58264,37 @@ function emptyUsage() {
58255
58264
  }
58256
58265
  };
58257
58266
  }
58267
+ function splitToolResultContent(content) {
58268
+ if (!Array.isArray(content)) {
58269
+ return { text: contentBlockToText(content), images: [] };
58270
+ }
58271
+ const textParts = [];
58272
+ const images = [];
58273
+ for (const block of content) {
58274
+ if (block && typeof block === "object" && "type" in block && block.type === "image") {
58275
+ const source = block.source;
58276
+ if (source?.type === "base64" && typeof source.data === "string") {
58277
+ images.push(source.data);
58278
+ } else {
58279
+ textParts.push("[Image omitted: unsupported image source]");
58280
+ }
58281
+ continue;
58282
+ }
58283
+ textParts.push(contentBlockToText([block]));
58284
+ }
58285
+ return { text: textParts.filter(Boolean).join(`
58286
+ `), images };
58287
+ }
58288
+ function describeToolResultImages(count3, toolName, supportsVision, model) {
58289
+ if (count3 === 0)
58290
+ return "";
58291
+ const plural = count3 === 1 ? "image" : `${count3} images`;
58292
+ if (supportsVision) {
58293
+ return `[${plural} from ${toolName} attached to the following message]`;
58294
+ }
58295
+ const named = model ? `"${model}"` : "the selected Ollama model";
58296
+ return `[${plural} from ${toolName} could not be sent: ${named} does not advertise ` + `vision support, so it cannot see images. Tell the user this directly and ` + `suggest switching to a vision model with /model.]`;
58297
+ }
58258
58298
  function contentBlockToText(content) {
58259
58299
  if (typeof content === "string") {
58260
58300
  return content;
@@ -75097,7 +75137,7 @@ var init_auth = __esm(() => {
75097
75137
 
75098
75138
  // src/utils/userAgent.ts
75099
75139
  function getURCodeUserAgent() {
75100
- return `ur/${"1.57.0"}`;
75140
+ return `ur/${"1.57.2"}`;
75101
75141
  }
75102
75142
 
75103
75143
  // src/utils/workloadContext.ts
@@ -75119,7 +75159,7 @@ function getUserAgent() {
75119
75159
  const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
75120
75160
  const workload = getWorkload();
75121
75161
  const workloadSuffix = workload ? `, workload/${workload}` : "";
75122
- return `ur-cli/${"1.57.0"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
75162
+ return `ur-cli/${"1.57.2"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
75123
75163
  }
75124
75164
  function getMCPUserAgent() {
75125
75165
  const parts = [];
@@ -75133,7 +75173,7 @@ function getMCPUserAgent() {
75133
75173
  parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
75134
75174
  }
75135
75175
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
75136
- return `ur/${"1.57.0"}${suffix}`;
75176
+ return `ur/${"1.57.2"}${suffix}`;
75137
75177
  }
75138
75178
  function getWebFetchUserAgent() {
75139
75179
  return `UR-User (${getURCodeUserAgent()})`;
@@ -75271,7 +75311,7 @@ var init_user = __esm(() => {
75271
75311
  deviceId,
75272
75312
  sessionId: getSessionId(),
75273
75313
  email: getEmail(),
75274
- appVersion: "1.57.0",
75314
+ appVersion: "1.57.2",
75275
75315
  platform: getHostPlatformForAnalytics(),
75276
75316
  organizationUuid,
75277
75317
  accountUuid,
@@ -83471,7 +83511,7 @@ var init_metadata = __esm(() => {
83471
83511
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
83472
83512
  WHITESPACE_REGEX = /\s+/;
83473
83513
  getVersionBase = memoize_default(() => {
83474
- const match = "1.57.0".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
83514
+ const match = "1.57.2".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
83475
83515
  return match ? match[0] : undefined;
83476
83516
  });
83477
83517
  buildEnvContext = memoize_default(async () => {
@@ -83511,7 +83551,7 @@ var init_metadata = __esm(() => {
83511
83551
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
83512
83552
  isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
83513
83553
  isURAiAuth: isURAISubscriber(),
83514
- version: "1.57.0",
83554
+ version: "1.57.2",
83515
83555
  versionBase: getVersionBase(),
83516
83556
  buildTime: "",
83517
83557
  deploymentEnvironment: env2.detectDeploymentEnvironment(),
@@ -84181,7 +84221,7 @@ function initialize1PEventLogging() {
84181
84221
  const platform2 = getPlatform();
84182
84222
  const attributes = {
84183
84223
  [import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
84184
- [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.57.0"
84224
+ [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.57.2"
84185
84225
  };
84186
84226
  if (platform2 === "wsl") {
84187
84227
  const wslVersion = getWslVersion();
@@ -84209,7 +84249,7 @@ function initialize1PEventLogging() {
84209
84249
  })
84210
84250
  ]
84211
84251
  });
84212
- firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.57.0");
84252
+ firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.57.2");
84213
84253
  }
84214
84254
  async function reinitialize1PEventLoggingIfConfigChanged() {
84215
84255
  if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
@@ -94048,7 +94088,7 @@ function formatAgentTrendReport(report = buildAgentTrendReport()) {
94048
94088
  function formatA2AAgentCard(options = {}, pretty = true) {
94049
94089
  return JSON.stringify(buildA2AAgentCard(options), null, pretty ? 2 : 0);
94050
94090
  }
94051
- var urVersion = "1.57.0", researchSnapshotDate = "2026-07-15", coverage, priorityRoadmap;
94091
+ var urVersion = "1.57.2", researchSnapshotDate = "2026-07-15", coverage, priorityRoadmap;
94052
94092
  var init_trends = __esm(() => {
94053
94093
  init_a2aCardSignature();
94054
94094
  coverage = [
@@ -96849,7 +96889,7 @@ function getAttributionHeader(fingerprint) {
96849
96889
  if (!isAttributionHeaderEnabled()) {
96850
96890
  return "";
96851
96891
  }
96852
- const version2 = `${"1.57.0"}.${fingerprint}`;
96892
+ const version2 = `${"1.57.2"}.${fingerprint}`;
96853
96893
  const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
96854
96894
  const cch = "";
96855
96895
  const workload = getWorkload();
@@ -154438,7 +154478,7 @@ var init_projectSafety = __esm(() => {
154438
154478
  function getInstruments() {
154439
154479
  if (instruments)
154440
154480
  return instruments;
154441
- const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.57.0");
154481
+ const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.57.2");
154442
154482
  instruments = {
154443
154483
  operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
154444
154484
  description: "GenAI operation duration.",
@@ -154536,7 +154576,7 @@ function genAiAgentAttributes() {
154536
154576
  "gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
154537
154577
  "gen_ai.provider.name": "ur",
154538
154578
  "gen_ai.agent.name": "UR-Nexus",
154539
- "gen_ai.agent.version": "1.57.0"
154579
+ "gen_ai.agent.version": "1.57.2"
154540
154580
  };
154541
154581
  }
154542
154582
  function genAiWorkflowAttributes(workflowName) {
@@ -154552,7 +154592,7 @@ function genAiWorkflowAttributes(workflowName) {
154552
154592
  function startGenAiWorkflowSpan(workflowName) {
154553
154593
  const attributes = genAiWorkflowAttributes(workflowName);
154554
154594
  const name = typeof attributes["gen_ai.workflow.name"] === "string" ? `invoke_workflow ${attributes["gen_ai.workflow.name"]}` : GEN_AI_OPERATION_INVOKE_WORKFLOW;
154555
- return import_api10.trace.getTracer("ur-agent.gen_ai", "1.57.0").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
154595
+ return import_api10.trace.getTracer("ur-agent.gen_ai", "1.57.2").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
154556
154596
  }
154557
154597
  function endGenAiWorkflowSpan(span, options2 = {}) {
154558
154598
  try {
@@ -154590,7 +154630,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
154590
154630
  if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
154591
154631
  attributes["gen_ai.memory.record.count"] = options2.recordCount;
154592
154632
  }
154593
- return import_api10.trace.getTracer("ur-agent.gen_ai", "1.57.0").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
154633
+ return import_api10.trace.getTracer("ur-agent.gen_ai", "1.57.2").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
154594
154634
  }
154595
154635
  function endGenAiMemorySpan(span, options2 = {}) {
154596
154636
  try {
@@ -206109,7 +206149,7 @@ function getTelemetryAttributes() {
206109
206149
  attributes["session.id"] = sessionId;
206110
206150
  }
206111
206151
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
206112
- attributes["app.version"] = "1.57.0";
206152
+ attributes["app.version"] = "1.57.2";
206113
206153
  }
206114
206154
  const oauthAccount = getOauthAccountInfo();
206115
206155
  if (oauthAccount) {
@@ -241676,7 +241716,7 @@ function getInstallationEnv() {
241676
241716
  return;
241677
241717
  }
241678
241718
  function getURCodeVersion() {
241679
- return "1.57.0";
241719
+ return "1.57.2";
241680
241720
  }
241681
241721
  async function getInstalledVSCodeExtensionVersion(command) {
241682
241722
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -249007,7 +249047,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
249007
249047
  const client2 = new Client({
249008
249048
  name: "ur",
249009
249049
  title: "UR",
249010
- version: "1.57.0",
249050
+ version: "1.57.2",
249011
249051
  description: "UR-Nexus autonomous engineering workflow engine",
249012
249052
  websiteUrl: PRODUCT_URL
249013
249053
  }, {
@@ -249367,7 +249407,7 @@ var init_client5 = __esm(() => {
249367
249407
  const client2 = new Client({
249368
249408
  name: "ur",
249369
249409
  title: "UR",
249370
- version: "1.57.0",
249410
+ version: "1.57.2",
249371
249411
  description: "UR-Nexus autonomous engineering workflow engine",
249372
249412
  websiteUrl: PRODUCT_URL
249373
249413
  }, {
@@ -261968,7 +262008,7 @@ async function createRuntime() {
261968
262008
  bootstrapTelemetry();
261969
262009
  const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
261970
262010
  [import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur-agent",
261971
- [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.57.0"
262011
+ [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.57.2"
261972
262012
  }));
261973
262013
  const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
261974
262014
  resource,
@@ -262001,11 +262041,11 @@ async function createRuntime() {
262001
262041
  setMeterProvider(meterProvider);
262002
262042
  setLoggerProvider(loggerProvider);
262003
262043
  if (meterProvider) {
262004
- const meter = meterProvider.getMeter("ur-agent", "1.57.0");
262044
+ const meter = meterProvider.getMeter("ur-agent", "1.57.2");
262005
262045
  setMeter(meter, (name, options2) => meter.createCounter(name, options2));
262006
262046
  }
262007
262047
  if (loggerProvider) {
262008
- setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.57.0"));
262048
+ setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.57.2"));
262009
262049
  }
262010
262050
  if (!cleanupRegistered2) {
262011
262051
  cleanupRegistered2 = true;
@@ -262667,9 +262707,9 @@ async function assertMinVersion() {
262667
262707
  if (false) {}
262668
262708
  try {
262669
262709
  const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
262670
- if (versionConfig.minVersion && lt("1.57.0", versionConfig.minVersion)) {
262710
+ if (versionConfig.minVersion && lt("1.57.2", versionConfig.minVersion)) {
262671
262711
  console.error(`
262672
- It looks like your version of UR (${"1.57.0"}) needs an update.
262712
+ It looks like your version of UR (${"1.57.2"}) needs an update.
262673
262713
  A newer version (${versionConfig.minVersion} or higher) is required to continue.
262674
262714
 
262675
262715
  To update, please run:
@@ -262885,7 +262925,7 @@ async function installGlobalPackage(specificVersion) {
262885
262925
  logError2(new AutoUpdaterError("Another process is currently installing an update"));
262886
262926
  logEvent("tengu_auto_updater_lock_contention", {
262887
262927
  pid: process.pid,
262888
- currentVersion: "1.57.0"
262928
+ currentVersion: "1.57.2"
262889
262929
  });
262890
262930
  return "in_progress";
262891
262931
  }
@@ -262894,7 +262934,7 @@ async function installGlobalPackage(specificVersion) {
262894
262934
  if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
262895
262935
  logError2(new Error("Windows NPM detected in WSL environment"));
262896
262936
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
262897
- currentVersion: "1.57.0"
262937
+ currentVersion: "1.57.2"
262898
262938
  });
262899
262939
  console.error(`
262900
262940
  Error: Windows NPM detected in WSL
@@ -263429,7 +263469,7 @@ function detectLinuxGlobPatternWarnings() {
263429
263469
  }
263430
263470
  async function getDoctorDiagnostic() {
263431
263471
  const installationType = await getCurrentInstallationType();
263432
- const version2 = typeof MACRO !== "undefined" ? "1.57.0" : "unknown";
263472
+ const version2 = typeof MACRO !== "undefined" ? "1.57.2" : "unknown";
263433
263473
  const installationPath = await getInstallationPath();
263434
263474
  const invokedBinary = getInvokedBinary();
263435
263475
  const multipleInstallations = await detectMultipleInstallations();
@@ -264364,8 +264404,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
264364
264404
  const maxVersion = await getMaxVersion();
264365
264405
  if (maxVersion && gt(version2, maxVersion)) {
264366
264406
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
264367
- if (gte("1.57.0", maxVersion)) {
264368
- logForDebugging(`Native installer: current version ${"1.57.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
264407
+ if (gte("1.57.2", maxVersion)) {
264408
+ logForDebugging(`Native installer: current version ${"1.57.2"} is already at or above maxVersion ${maxVersion}, skipping update`);
264369
264409
  logEvent("tengu_native_update_skipped_max_version", {
264370
264410
  latency_ms: Date.now() - startTime,
264371
264411
  max_version: maxVersion,
@@ -264376,7 +264416,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
264376
264416
  version2 = maxVersion;
264377
264417
  }
264378
264418
  }
264379
- if (!forceReinstall && version2 === "1.57.0" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
264419
+ if (!forceReinstall && version2 === "1.57.2" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
264380
264420
  logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
264381
264421
  logEvent("tengu_native_update_complete", {
264382
264422
  latency_ms: Date.now() - startTime,
@@ -314147,7 +314187,7 @@ var init_UI13 = __esm(() => {
314147
314187
  });
314148
314188
 
314149
314189
  // src/tools/ComputerTool/ComputerTool.tsx
314150
- import { existsSync as existsSync23, statSync as statSync12 } from "fs";
314190
+ import { existsSync as existsSync23, readFileSync as readFileSync27, statSync as statSync12 } from "fs";
314151
314191
  import { tmpdir as tmpdir8 } from "os";
314152
314192
  import { join as join100 } from "path";
314153
314193
  function supportedPlatform() {
@@ -314181,6 +314221,7 @@ var init_ComputerTool = __esm(() => {
314181
314221
  init_v4();
314182
314222
  init_Tool();
314183
314223
  init_execFileNoThrow();
314224
+ init_imageResizer();
314184
314225
  init_UI13();
314185
314226
  inputSchema17 = lazySchema(() => exports_external.object({
314186
314227
  action: exports_external.enum(["screenshot", "click", "type"]).describe("What to do: read the screen, click a point, or type text"),
@@ -314193,7 +314234,9 @@ var init_ComputerTool = __esm(() => {
314193
314234
  action: exports_external.string(),
314194
314235
  ok: exports_external.boolean(),
314195
314236
  detail: exports_external.string(),
314196
- screenshotPath: exports_external.string().optional()
314237
+ screenshotPath: exports_external.string().optional(),
314238
+ imageBase64: exports_external.string().optional(),
314239
+ imageMediaType: exports_external.string().optional()
314197
314240
  }));
314198
314241
  ComputerTool = buildTool({
314199
314242
  name: COMPUTER_TOOL_NAME,
@@ -314290,14 +314333,30 @@ var init_ComputerTool = __esm(() => {
314290
314333
  }
314291
314334
  };
314292
314335
  }
314293
- return {
314294
- data: {
314295
- action: "screenshot",
314296
- ok: true,
314297
- detail: `Captured ${statSync12(path13).size} bytes`,
314298
- screenshotPath: path13
314299
- }
314300
- };
314336
+ const bytes = statSync12(path13).size;
314337
+ try {
314338
+ const raw = readFileSync27(path13);
314339
+ const resized = await maybeResizeAndDownsampleImageBuffer(raw, bytes, "png");
314340
+ return {
314341
+ data: {
314342
+ action: "screenshot",
314343
+ ok: true,
314344
+ detail: `Captured the screen (${resized.buffer.length} bytes sent)`,
314345
+ screenshotPath: path13,
314346
+ imageBase64: resized.buffer.toString("base64"),
314347
+ imageMediaType: `image/${resized.mediaType}`
314348
+ }
314349
+ };
314350
+ } catch (error42) {
314351
+ return {
314352
+ data: {
314353
+ action: "screenshot",
314354
+ ok: true,
314355
+ detail: `Captured ${bytes} bytes to ${path13}, but the image could not be ` + `encoded (${error42 instanceof Error ? error42.message : String(error42)}). ` + "Read that path to view it.",
314356
+ screenshotPath: path13
314357
+ }
314358
+ };
314359
+ }
314301
314360
  }
314302
314361
  if (input.action === "click") {
314303
314362
  const point = { x: input.x ?? Number.NaN, y: input.y ?? Number.NaN };
@@ -314348,7 +314407,25 @@ var init_ComputerTool = __esm(() => {
314348
314407
  }
314349
314408
  };
314350
314409
  },
314351
- mapToolResultToToolResultBlockParam({ action: action2, ok, detail }, toolUseID) {
314410
+ mapToolResultToToolResultBlockParam(data, toolUseID) {
314411
+ const { action: action2, ok, detail, imageBase64, imageMediaType } = data;
314412
+ if (imageBase64 && imageMediaType) {
314413
+ return {
314414
+ tool_use_id: toolUseID,
314415
+ type: "tool_result",
314416
+ content: [
314417
+ { type: "text", text: `${action2}: ${detail}` },
314418
+ {
314419
+ type: "image",
314420
+ source: {
314421
+ type: "base64",
314422
+ data: imageBase64,
314423
+ media_type: imageMediaType
314424
+ }
314425
+ }
314426
+ ]
314427
+ };
314428
+ }
314352
314429
  return {
314353
314430
  tool_use_id: toolUseID,
314354
314431
  type: "tool_result",
@@ -316057,13 +316134,13 @@ var init_DockerTool = __esm(() => {
316057
316134
  });
316058
316135
 
316059
316136
  // src/tools/TestRunnerTool/TestRunnerTool.ts
316060
- import { existsSync as existsSync25, readFileSync as readFileSync27 } from "fs";
316137
+ import { existsSync as existsSync25, readFileSync as readFileSync28 } from "fs";
316061
316138
  import { join as join102 } from "path";
316062
316139
  function detectTestCommand(cwd2) {
316063
316140
  const packagePath = join102(cwd2, "package.json");
316064
316141
  if (existsSync25(packagePath)) {
316065
316142
  try {
316066
- const pkg = JSON.parse(readFileSync27(packagePath, "utf8"));
316143
+ const pkg = JSON.parse(readFileSync28(packagePath, "utf8"));
316067
316144
  if (pkg.scripts?.test)
316068
316145
  return `bun run test`;
316069
316146
  if (pkg.scripts?.["test:unit"])
@@ -319260,7 +319337,7 @@ var init_indexer = __esm(() => {
319260
319337
  });
319261
319338
 
319262
319339
  // src/utils/codeIndex/graph.ts
319263
- import { existsSync as existsSync26, mkdirSync as mkdirSync17, readFileSync as readFileSync28, writeFileSync as writeFileSync18 } from "fs";
319340
+ import { existsSync as existsSync26, mkdirSync as mkdirSync17, readFileSync as readFileSync29, writeFileSync as writeFileSync18 } from "fs";
319264
319341
  import { posix as posix6, resolve as resolve39 } from "path";
319265
319342
  import { join as join106 } from "path";
319266
319343
  function matchAll2(text, regexes) {
@@ -319408,7 +319485,7 @@ function graphPath(root2) {
319408
319485
  }
319409
319486
  async function buildCodeGraph(options2) {
319410
319487
  const signal = options2.signal ?? new AbortController().signal;
319411
- const read = options2.readFile ?? ((abs) => readFileSync28(abs, "utf-8"));
319488
+ const read = options2.readFile ?? ((abs) => readFileSync29(abs, "utf-8"));
319412
319489
  const rels = (await listIndexableFiles(options2.root, signal)).slice(0, options2.maxFiles ?? 5000);
319413
319490
  const sources = [];
319414
319491
  for (const rel of rels) {
@@ -319426,7 +319503,7 @@ function loadGraph(root2) {
319426
319503
  const path13 = graphPath(root2);
319427
319504
  if (!existsSync26(path13))
319428
319505
  return null;
319429
- const parsed = safeParseJSON(readFileSync28(path13, "utf-8"), false);
319506
+ const parsed = safeParseJSON(readFileSync29(path13, "utf-8"), false);
319430
319507
  return parsed && typeof parsed === "object" ? parsed : null;
319431
319508
  }
319432
319509
  function formatGraphStats(graph) {
@@ -319469,7 +319546,7 @@ var init_graph = __esm(() => {
319469
319546
 
319470
319547
  // src/utils/codeIndex/repoIndex.ts
319471
319548
  import { createHash as createHash29 } from "crypto";
319472
- import { existsSync as existsSync27, mkdirSync as mkdirSync18, readFileSync as readFileSync29, writeFileSync as writeFileSync19 } from "fs";
319549
+ import { existsSync as existsSync27, mkdirSync as mkdirSync18, readFileSync as readFileSync30, writeFileSync as writeFileSync19 } from "fs";
319473
319550
  import { join as join107, posix as posix7 } from "path";
319474
319551
  function sha12(content) {
319475
319552
  return createHash29("sha1").update(content).digest("hex");
@@ -319684,7 +319761,7 @@ function resolveImport2(fromFile, spec, fileSet) {
319684
319761
  }
319685
319762
  async function buildRepoIndex(options2) {
319686
319763
  const signal = options2.signal ?? new AbortController().signal;
319687
- const read = options2.readFile ?? ((abs) => readFileSync29(abs, "utf-8"));
319764
+ const read = options2.readFile ?? ((abs) => readFileSync30(abs, "utf-8"));
319688
319765
  const rels = (await listIndexableFiles(options2.root, signal)).slice(0, options2.maxFiles ?? 5000);
319689
319766
  const fileSet = new Set(rels);
319690
319767
  const files = [];
@@ -319838,7 +319915,7 @@ function loadConfigIndex(root2) {
319838
319915
  function loadJsonFile(path13) {
319839
319916
  if (!existsSync27(path13))
319840
319917
  return null;
319841
- const parsed = safeParseJSON(readFileSync29(path13, "utf-8"), false);
319918
+ const parsed = safeParseJSON(readFileSync30(path13, "utf-8"), false);
319842
319919
  return parsed && typeof parsed === "object" ? parsed : null;
319843
319920
  }
319844
319921
  function repoSearch(repo, query2) {
@@ -334621,7 +334698,7 @@ function isAnyTracingEnabled() {
334621
334698
  return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
334622
334699
  }
334623
334700
  function getTracer() {
334624
- return import_api39.trace.getTracer("ur-agent.gen_ai", "1.57.0");
334701
+ return import_api39.trace.getTracer("ur-agent.gen_ai", "1.57.2");
334625
334702
  }
334626
334703
  function createSpanAttributes(spanType, customAttributes = {}) {
334627
334704
  const baseAttributes = getTelemetryAttributes();
@@ -335400,7 +335477,7 @@ var init_rootcause = __esm(() => {
335400
335477
  });
335401
335478
 
335402
335479
  // src/stability/ledger.ts
335403
- import { appendFileSync as appendFileSync4, existsSync as existsSync29, mkdirSync as mkdirSync19, readFileSync as readFileSync30 } from "fs";
335480
+ import { appendFileSync as appendFileSync4, existsSync as existsSync29, mkdirSync as mkdirSync19, readFileSync as readFileSync31 } from "fs";
335404
335481
  import { dirname as dirname45, join as join109 } from "path";
335405
335482
  function ledgerPath(cwd2) {
335406
335483
  return join109(cwd2, ".ur", "actions.jsonl");
@@ -335438,7 +335515,7 @@ function readActions(cwd2, limit = 50) {
335438
335515
  const file2 = ledgerPath(cwd2);
335439
335516
  if (!existsSync29(file2))
335440
335517
  return [];
335441
- const lines = readFileSync30(file2, "utf8").split(`
335518
+ const lines = readFileSync31(file2, "utf8").split(`
335442
335519
  `).filter(Boolean);
335443
335520
  const out = [];
335444
335521
  for (const line of lines.slice(-limit)) {
@@ -338431,13 +338508,13 @@ var init_turnSideEffects = __esm(() => {
338431
338508
 
338432
338509
  // src/ur/notes.ts
338433
338510
  import { createHash as createHash31 } from "crypto";
338434
- import { appendFileSync as appendFileSync5, existsSync as existsSync30, mkdirSync as mkdirSync20, readFileSync as readFileSync31, writeFileSync as writeFileSync20 } from "fs";
338511
+ import { appendFileSync as appendFileSync5, existsSync as existsSync30, mkdirSync as mkdirSync20, readFileSync as readFileSync32, writeFileSync as writeFileSync20 } from "fs";
338435
338512
  import { dirname as dirname46, join as join111 } from "path";
338436
338513
  function readJsonl(file2) {
338437
338514
  if (!existsSync30(file2))
338438
338515
  return [];
338439
338516
  const out = [];
338440
- for (const line of readFileSync31(file2, "utf8").split(`
338517
+ for (const line of readFileSync32(file2, "utf8").split(`
338441
338518
  `).filter(Boolean)) {
338442
338519
  try {
338443
338520
  out.push(JSON.parse(line));
@@ -338492,7 +338569,7 @@ function rememberInAutoMemory(memoryDir, text) {
338492
338569
  `));
338493
338570
  const indexPath2 = join111(memoryDir, "MEMORY.md");
338494
338571
  const indexLine = `- [Remembered note](${fileName}) \u2014 ${description}`;
338495
- const existing2 = existsSync30(indexPath2) ? readFileSync31(indexPath2, "utf8") : "";
338572
+ const existing2 = existsSync30(indexPath2) ? readFileSync32(indexPath2, "utf8") : "";
338496
338573
  if (!existing2.includes(`](${fileName})`)) {
338497
338574
  const prefix = existing2.trimEnd();
338498
338575
  writeFileSync20(indexPath2, `${prefix ? `${prefix}
@@ -338539,7 +338616,7 @@ var exports_memoryLines = {};
338539
338616
  __export(exports_memoryLines, {
338540
338617
  existingMemoryLines: () => existingMemoryLines
338541
338618
  });
338542
- import { existsSync as existsSync31, readFileSync as readFileSync32 } from "fs";
338619
+ import { existsSync as existsSync31, readFileSync as readFileSync33 } from "fs";
338543
338620
  import { join as join112 } from "path";
338544
338621
  function existingMemoryLines(cwd2 = getCwd()) {
338545
338622
  const lines = [];
@@ -338556,7 +338633,7 @@ function existingMemoryLines(cwd2 = getCwd()) {
338556
338633
  try {
338557
338634
  if (!existsSync31(file2))
338558
338635
  continue;
338559
- for (const line of readFileSync32(file2, "utf8").split(`
338636
+ for (const line of readFileSync33(file2, "utf8").split(`
338560
338637
  `)) {
338561
338638
  const trimmed = line.replace(/^\s*[-*+]\s+/, "").trim();
338562
338639
  if (trimmed.length >= 12 && !/^[#`]/.test(trimmed))
@@ -364101,7 +364178,7 @@ function Feedback({
364101
364178
  platform: env2.platform,
364102
364179
  gitRepo: envInfo.isGit,
364103
364180
  terminal: env2.terminal,
364104
- version: "1.57.0",
364181
+ version: "1.57.2",
364105
364182
  transcript: normalizeMessagesForAPI(messages),
364106
364183
  errors: sanitizedErrors,
364107
364184
  lastApiRequest: getLastAPIRequest(),
@@ -364293,7 +364370,7 @@ function Feedback({
364293
364370
  ", ",
364294
364371
  env2.terminal,
364295
364372
  ", v",
364296
- "1.57.0"
364373
+ "1.57.2"
364297
364374
  ]
364298
364375
  }, undefined, true, undefined, this)
364299
364376
  ]
@@ -364399,7 +364476,7 @@ ${sanitizedDescription}
364399
364476
  ` + `**Environment Info**
364400
364477
  ` + `- Platform: ${env2.platform}
364401
364478
  ` + `- Terminal: ${env2.terminal}
364402
- ` + `- Version: ${"1.57.0"}
364479
+ ` + `- Version: ${"1.57.2"}
364403
364480
  ` + `- Feedback ID: ${feedbackId}
364404
364481
  ` + `
364405
364482
  **Errors**
@@ -367509,7 +367586,7 @@ function buildPrimarySection() {
367509
367586
  }, undefined, false, undefined, this);
367510
367587
  return [{
367511
367588
  label: "Version",
367512
- value: "1.57.0"
367589
+ value: "1.57.2"
367513
367590
  }, {
367514
367591
  label: "Session name",
367515
367592
  value: nameValue
@@ -370839,7 +370916,7 @@ function Config({
370839
370916
  }
370840
370917
  }, undefined, false, undefined, this)
370841
370918
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime179.jsxDEV(ChannelDowngradeDialog, {
370842
- currentVersion: "1.57.0",
370919
+ currentVersion: "1.57.2",
370843
370920
  onChoice: (choice) => {
370844
370921
  setShowSubmenu(null);
370845
370922
  setTabsHidden(false);
@@ -370851,7 +370928,7 @@ function Config({
370851
370928
  autoUpdatesChannel: "stable"
370852
370929
  };
370853
370930
  if (choice === "stay") {
370854
- newSettings.minimumVersion = "1.57.0";
370931
+ newSettings.minimumVersion = "1.57.2";
370855
370932
  }
370856
370933
  updateSettingsForSource("userSettings", newSettings);
370857
370934
  setSettingsData((prev_27) => ({
@@ -378915,7 +378992,7 @@ function HelpV2(t0) {
378915
378992
  let t6;
378916
378993
  if ($2[31] !== tabs) {
378917
378994
  t6 = /* @__PURE__ */ jsx_dev_runtime206.jsxDEV(Tabs, {
378918
- title: `UR v${"1.57.0"}`,
378995
+ title: `UR v${"1.57.2"}`,
378919
378996
  color: "professionalBlue",
378920
378997
  defaultTab: "general",
378921
378998
  children: tabs
@@ -379229,7 +379306,7 @@ var init_IdeAutoConnectDialog = __esm(() => {
379229
379306
  });
379230
379307
 
379231
379308
  // src/services/agents/ideDiffs.ts
379232
- import { existsSync as existsSync33, mkdirSync as mkdirSync21, readFileSync as readFileSync33, rmSync as rmSync8, writeFileSync as writeFileSync21 } from "fs";
379309
+ import { existsSync as existsSync33, mkdirSync as mkdirSync21, readFileSync as readFileSync34, rmSync as rmSync8, writeFileSync as writeFileSync21 } from "fs";
379233
379310
  import { join as join139, resolve as resolve47, sep as sep31 } from "path";
379234
379311
  function ideDir(cwd2) {
379235
379312
  return join139(cwd2, ".ur", "ide");
@@ -379274,7 +379351,7 @@ function loadManifest3(cwd2) {
379274
379351
  const path16 = manifestPath4(cwd2);
379275
379352
  if (!existsSync33(path16))
379276
379353
  return { version: 1, diffs: [] };
379277
- const parsed = safeParseJSON(readFileSync33(path16, "utf-8"), false);
379354
+ const parsed = safeParseJSON(readFileSync34(path16, "utf-8"), false);
379278
379355
  return parsed && typeof parsed === "object" && Array.isArray(parsed.diffs) ? { version: 1, diffs: parsed.diffs.filter((bundle) => isValidBundle(cwd2, bundle)) } : { version: 1, diffs: [] };
379279
379356
  }
379280
379357
  function saveManifest3(cwd2, manifest) {
@@ -379394,7 +379471,7 @@ function readIdeDiffPatch(cwd2, id) {
379394
379471
  const path16 = bundleArtifactPath(cwd2, bundle, "patch");
379395
379472
  if (!path16)
379396
379473
  return null;
379397
- return existsSync33(path16) ? readFileSync33(path16, "utf-8") : null;
379474
+ return existsSync33(path16) ? readFileSync34(path16, "utf-8") : null;
379398
379475
  }
379399
379476
  function mutate2(cwd2, id, fn) {
379400
379477
  const manifest = loadManifest3(cwd2);
@@ -379832,7 +379909,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
379832
379909
  async function handleInitialize(options2) {
379833
379910
  return {
379834
379911
  name: "UR",
379835
- version: "1.57.0",
379912
+ version: "1.57.2",
379836
379913
  protocolVersion: "0.1.0",
379837
379914
  workspaceRoot: options2.cwd,
379838
379915
  capabilities: {
@@ -396940,7 +397017,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
396940
397017
  return [];
396941
397018
  }
396942
397019
  }
396943
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.57.0") {
397020
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.57.2") {
396944
397021
  if (process.env.USER_TYPE === "ant") {
396945
397022
  const changelog = "";
396946
397023
  if (changelog) {
@@ -396967,7 +397044,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.57.0")
396967
397044
  releaseNotes
396968
397045
  };
396969
397046
  }
396970
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.57.0") {
397047
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.57.2") {
396971
397048
  if (process.env.USER_TYPE === "ant") {
396972
397049
  const changelog = "";
396973
397050
  if (changelog) {
@@ -399824,7 +399901,7 @@ function getRecentActivitySync() {
399824
399901
  return cachedActivity;
399825
399902
  }
399826
399903
  function getLogoDisplayData() {
399827
- const version2 = process.env.DEMO_VERSION ?? "1.57.0";
399904
+ const version2 = process.env.DEMO_VERSION ?? "1.57.2";
399828
399905
  const serverUrl = getDirectConnectServerUrl();
399829
399906
  const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
399830
399907
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -400708,7 +400785,7 @@ function LogoV2() {
400708
400785
  if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
400709
400786
  t2 = () => {
400710
400787
  const currentConfig2 = getGlobalConfig();
400711
- if (currentConfig2.lastReleaseNotesSeen === "1.57.0") {
400788
+ if (currentConfig2.lastReleaseNotesSeen === "1.57.2") {
400712
400789
  return;
400713
400790
  }
400714
400791
  saveGlobalConfig(_temp327);
@@ -401393,12 +401470,12 @@ function LogoV2() {
401393
401470
  return t41;
401394
401471
  }
401395
401472
  function _temp327(current) {
401396
- if (current.lastReleaseNotesSeen === "1.57.0") {
401473
+ if (current.lastReleaseNotesSeen === "1.57.2") {
401397
401474
  return current;
401398
401475
  }
401399
401476
  return {
401400
401477
  ...current,
401401
- lastReleaseNotesSeen: "1.57.0"
401478
+ lastReleaseNotesSeen: "1.57.2"
401402
401479
  };
401403
401480
  }
401404
401481
  function _temp241(s_0) {
@@ -407651,7 +407728,7 @@ import {
407651
407728
  copyFileSync as copyFileSync2,
407652
407729
  existsSync as existsSync34,
407653
407730
  mkdirSync as mkdirSync22,
407654
- readFileSync as readFileSync34,
407731
+ readFileSync as readFileSync35,
407655
407732
  statSync as statSync14
407656
407733
  } from "fs";
407657
407734
  import { dirname as dirname64, isAbsolute as isAbsolute32, resolve as resolve51 } from "path";
@@ -407700,7 +407777,7 @@ function importSessionFile(sourcePath) {
407700
407777
  if (stat42.size > MAX_IMPORT_BYTES) {
407701
407778
  throw new Error(`Refusing to import ${stat42.size} bytes (limit ${MAX_IMPORT_BYTES})`);
407702
407779
  }
407703
- const validation = validateTranscriptContent(readFileSync34(source, "utf8"));
407780
+ const validation = validateTranscriptContent(readFileSync35(source, "utf8"));
407704
407781
  if (!validation.valid) {
407705
407782
  throw new Error(`Invalid session file:
407706
407783
  - ${validation.errors.join(`
@@ -408163,7 +408240,7 @@ var exports_memory_suggest = {};
408163
408240
  __export(exports_memory_suggest, {
408164
408241
  call: () => call34
408165
408242
  });
408166
- import { existsSync as existsSync36, readFileSync as readFileSync35 } from "fs";
408243
+ import { existsSync as existsSync36, readFileSync as readFileSync36 } from "fs";
408167
408244
  function flagValue2(tokens, flag) {
408168
408245
  const index2 = tokens.indexOf(flag);
408169
408246
  return index2 >= 0 ? tokens[index2 + 1] : undefined;
@@ -408171,7 +408248,7 @@ function flagValue2(tokens, flag) {
408171
408248
  function recentUserMessages(path19, limit) {
408172
408249
  if (!existsSync36(path19))
408173
408250
  return [];
408174
- const raw = readFileSync35(path19, "utf8");
408251
+ const raw = readFileSync36(path19, "utf8");
408175
408252
  if (raw.length > MAX_TRANSCRIPT_READ_BYTES)
408176
408253
  return [];
408177
408254
  const messages = [];
@@ -416988,7 +417065,7 @@ var init_selfReview = __esm(() => {
416988
417065
  import {
416989
417066
  existsSync as existsSync40,
416990
417067
  mkdirSync as mkdirSync27,
416991
- readFileSync as readFileSync42,
417068
+ readFileSync as readFileSync43,
416992
417069
  readdirSync as readdirSync10,
416993
417070
  writeFileSync as writeFileSync26
416994
417071
  } from "fs";
@@ -417165,7 +417242,7 @@ function loadGuardrails(cwd2) {
417165
417242
  for (const file2 of readdirSync10(dir)) {
417166
417243
  if (!file2.endsWith(".json"))
417167
417244
  continue;
417168
- const parsed = safeParseJSON(readFileSync42(join156(dir, file2), "utf-8"), false);
417245
+ const parsed = safeParseJSON(readFileSync43(join156(dir, file2), "utf-8"), false);
417169
417246
  if (!parsed || typeof parsed !== "object")
417170
417247
  continue;
417171
417248
  const fileRules = Array.isArray(parsed) ? parsed : Array.isArray(parsed.rules) ? parsed.rules : [];
@@ -417252,7 +417329,7 @@ import {
417252
417329
  existsSync as existsSync41,
417253
417330
  mkdtempSync,
417254
417331
  mkdirSync as mkdirSync28,
417255
- readFileSync as readFileSync43,
417332
+ readFileSync as readFileSync44,
417256
417333
  rmSync as rmSync10,
417257
417334
  writeFileSync as writeFileSync27
417258
417335
  } from "fs";
@@ -417659,7 +417736,7 @@ function normalizeMentionEvent(root2, eventName) {
417659
417736
  return;
417660
417737
  }
417661
417738
  function loadAgenticCiEventFile(path22) {
417662
- const bytes = readFileSync43(path22);
417739
+ const bytes = readFileSync44(path22);
417663
417740
  if (bytes.byteLength > AGENTIC_CI_MAX_EVENT_BYTES) {
417664
417741
  throw new Error(`event payload exceeds ${AGENTIC_CI_MAX_EVENT_BYTES} bytes`);
417665
417742
  }
@@ -418173,7 +418250,7 @@ function loadAgenticCiSpec(cwd2, name) {
418173
418250
  const path22 = agenticCiSpecPath(cwd2, name);
418174
418251
  if (!existsSync41(path22))
418175
418252
  return null;
418176
- return parseAgenticCiSpec(readFileSync43(path22, "utf8"));
418253
+ return parseAgenticCiSpec(readFileSync44(path22, "utf8"));
418177
418254
  }
418178
418255
  function saveAgenticCiSpec(cwd2, spec, options2 = {}) {
418179
418256
  const validation = validateAgenticCiSpec(spec);
@@ -418196,7 +418273,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
418196
418273
  if (spec.name !== specName) {
418197
418274
  throw new Error("Agentic CI workflow spec name does not match");
418198
418275
  }
418199
- const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.57.0" : "1.57.0");
418276
+ const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.57.2" : "1.57.2");
418200
418277
  if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
418201
418278
  throw new Error("invalid ur-agent package version");
418202
418279
  }
@@ -419189,7 +419266,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
419189
419266
  path: ".github/workflows/ur.yml",
419190
419267
  root: "project",
419191
419268
  content: compileAgenticCiWorkflow("default", {
419192
- packageVersion: typeof MACRO !== "undefined" ? "1.57.0" : "1.57.0"
419269
+ packageVersion: typeof MACRO !== "undefined" ? "1.57.2" : "1.57.2"
419193
419270
  })
419194
419271
  },
419195
419272
  {
@@ -419252,7 +419329,7 @@ function value(tokens, flag) {
419252
419329
  return index2 >= 0 ? tokens[index2 + 1] : undefined;
419253
419330
  }
419254
419331
  function cliVersion() {
419255
- return typeof MACRO !== "undefined" ? "1.57.0" : "1.57.0";
419332
+ return typeof MACRO !== "undefined" ? "1.57.2" : "1.57.2";
419256
419333
  }
419257
419334
  function workflowPath(cwd2) {
419258
419335
  return join159(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
@@ -424122,7 +424199,7 @@ import {
424122
424199
  mkdirSync as mkdirSync31,
424123
424200
  mkdtempSync as mkdtempSync2,
424124
424201
  readdirSync as readdirSync11,
424125
- readFileSync as readFileSync44,
424202
+ readFileSync as readFileSync45,
424126
424203
  renameSync as renameSync10,
424127
424204
  rmSync as rmSync11,
424128
424205
  statSync as statSync17,
@@ -424333,7 +424410,7 @@ function readPersistedSessionFile(sessionId, storeRoot) {
424333
424410
  if (size <= 0 || size > MAX_SESSION_METADATA_BYTES) {
424334
424411
  throw new Error("metadata size is invalid");
424335
424412
  }
424336
- return normalizePersistedSession(JSON.parse(readFileSync44(path22, "utf8")), sessionId);
424413
+ return normalizePersistedSession(JSON.parse(readFileSync45(path22, "utf8")), sessionId);
424337
424414
  }
424338
424415
  function persistAcpSession(sessionId, state, storeRoot) {
424339
424416
  const path22 = persistedSessionPath(sessionId, storeRoot);
@@ -424407,7 +424484,7 @@ function loadPersistedAcpHistory(sessionId, storeRoot) {
424407
424484
  if (size > MAX_SESSION_HISTORY_BYTES) {
424408
424485
  invalidParams2(`session history exceeds the supported size: ${sessionId}`);
424409
424486
  }
424410
- const lines = readFileSync44(path22, "utf8").split(`
424487
+ const lines = readFileSync45(path22, "utf8").split(`
424411
424488
  `).filter(Boolean);
424412
424489
  if (lines.length > MAX_SESSION_HISTORY_EVENTS) {
424413
424490
  invalidParams2(`session history has too many events: ${sessionId}`);
@@ -425108,7 +425185,7 @@ function createAcpStdioApp(deps) {
425108
425185
  }
425109
425186
  },
425110
425187
  authMethods: [],
425111
- agentInfo: { name: "UR-Nexus", version: "1.57.0" }
425188
+ agentInfo: { name: "UR-Nexus", version: "1.57.2" }
425112
425189
  })).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
425113
425190
  const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
425114
425191
  await runtime2.announce({
@@ -425205,7 +425282,7 @@ function createAcpStdioAgent(deps) {
425205
425282
  }
425206
425283
  },
425207
425284
  authMethods: [],
425208
- agentInfo: { name: "UR-Nexus", version: "1.57.0" }
425285
+ agentInfo: { name: "UR-Nexus", version: "1.57.2" }
425209
425286
  });
425210
425287
  return;
425211
425288
  case "authenticate":
@@ -426194,7 +426271,7 @@ import {
426194
426271
  existsSync as existsSync46,
426195
426272
  mkdirSync as mkdirSync33,
426196
426273
  readdirSync as readdirSync12,
426197
- readFileSync as readFileSync46,
426274
+ readFileSync as readFileSync47,
426198
426275
  unlinkSync as unlinkSync9,
426199
426276
  writeFileSync as writeFileSync32
426200
426277
  } from "fs";
@@ -426244,7 +426321,7 @@ function listSpecs() {
426244
426321
  if (!existsSync46(dir))
426245
426322
  return [];
426246
426323
  return readdirSync12(dir).filter((file2) => file2.endsWith(".json")).map((file2) => {
426247
- const parsed = safeParseJSON(readFileSync46(join162(dir, file2), "utf-8"), false);
426324
+ const parsed = safeParseJSON(readFileSync47(join162(dir, file2), "utf-8"), false);
426248
426325
  return parsed && typeof parsed === "object" ? parsed : null;
426249
426326
  }).filter((spec) => spec !== null);
426250
426327
  }
@@ -426491,7 +426568,7 @@ Expected a 5-field cron expression with a next run in the next year.`
426491
426568
  if (!existsSync46(path22)) {
426492
426569
  return { type: "text", value: `Automation not found: ${sanitizeName2(name)}` };
426493
426570
  }
426494
- const raw = readFileSync46(path22, "utf-8");
426571
+ const raw = readFileSync47(path22, "utf-8");
426495
426572
  const parsed = safeParseJSON(raw, false);
426496
426573
  if (json2) {
426497
426574
  return {
@@ -426509,7 +426586,7 @@ Expected a 5-field cron expression with a next run in the next year.`
426509
426586
  if (!existsSync46(path22)) {
426510
426587
  return { type: "text", value: `Automation not found: ${sanitizeName2(name)}` };
426511
426588
  }
426512
- const parsed = safeParseJSON(readFileSync46(path22, "utf-8"), false);
426589
+ const parsed = safeParseJSON(readFileSync47(path22, "utf-8"), false);
426513
426590
  if (!parsed)
426514
426591
  return { type: "text", value: `Automation file is invalid: ${path22}` };
426515
426592
  const updated = { ...parsed, enabled: command5 === "enable" };
@@ -428102,7 +428179,7 @@ var exports_browser_qa = {};
428102
428179
  __export(exports_browser_qa, {
428103
428180
  call: () => call66
428104
428181
  });
428105
- import { existsSync as existsSync48, readdirSync as readdirSync14, readFileSync as readFileSync47 } from "fs";
428182
+ import { existsSync as existsSync48, readdirSync as readdirSync14, readFileSync as readFileSync48 } from "fs";
428106
428183
  import { join as join166 } from "path";
428107
428184
  function fixturesDir() {
428108
428185
  return join166(getCwd(), ".ur", "browser-qa");
@@ -428111,7 +428188,7 @@ function fixtures() {
428111
428188
  if (!existsSync48(fixturesDir()))
428112
428189
  return [];
428113
428190
  return readdirSync14(fixturesDir()).filter((file2) => file2.endsWith(".json")).map((file2) => {
428114
- const parsed = safeParseJSON(readFileSync47(join166(fixturesDir(), file2), "utf-8"), false);
428191
+ const parsed = safeParseJSON(readFileSync48(join166(fixturesDir(), file2), "utf-8"), false);
428115
428192
  return { file: file2, fixture: parsed && typeof parsed === "object" ? parsed : null };
428116
428193
  });
428117
428194
  }
@@ -428209,7 +428286,7 @@ var exports_claim_ledger = {};
428209
428286
  __export(exports_claim_ledger, {
428210
428287
  call: () => call67
428211
428288
  });
428212
- import { existsSync as existsSync49, mkdirSync as mkdirSync35, readFileSync as readFileSync48, writeFileSync as writeFileSync34 } from "fs";
428289
+ import { existsSync as existsSync49, mkdirSync as mkdirSync35, readFileSync as readFileSync49, writeFileSync as writeFileSync34 } from "fs";
428213
428290
  import { join as join167 } from "path";
428214
428291
  function ledgerPath2() {
428215
428292
  return join167(getCwd(), ".ur", "evidence", "claims.json");
@@ -428221,7 +428298,7 @@ function option8(tokens, name) {
428221
428298
  function loadLedger() {
428222
428299
  if (!existsSync49(ledgerPath2()))
428223
428300
  return { claims: [] };
428224
- const parsed = safeParseJSON(readFileSync48(ledgerPath2(), "utf-8"), false);
428301
+ const parsed = safeParseJSON(readFileSync49(ledgerPath2(), "utf-8"), false);
428225
428302
  return parsed && typeof parsed === "object" && Array.isArray(parsed.claims) ? parsed : { claims: [] };
428226
428303
  }
428227
428304
  function saveLedger(ledger) {
@@ -428316,7 +428393,7 @@ var init_claim_ledger2 = __esm(() => {
428316
428393
  import {
428317
428394
  existsSync as existsSync50,
428318
428395
  mkdirSync as mkdirSync36,
428319
- readFileSync as readFileSync49,
428396
+ readFileSync as readFileSync50,
428320
428397
  readdirSync as readdirSync15,
428321
428398
  writeFileSync as writeFileSync35
428322
428399
  } from "fs";
@@ -428506,7 +428583,7 @@ function loadWorkflow(cwd2, name) {
428506
428583
  const path22 = join168(workflowsDir(cwd2), `${slug3}.${ext}`);
428507
428584
  if (existsSync50(path22)) {
428508
428585
  try {
428509
- return parseWorkflowText(readFileSync49(path22, "utf-8"));
428586
+ return parseWorkflowText(readFileSync50(path22, "utf-8"));
428510
428587
  } catch {
428511
428588
  return null;
428512
428589
  }
@@ -428527,7 +428604,7 @@ function loadRunState(cwd2, name) {
428527
428604
  const path22 = statePath(cwd2, name);
428528
428605
  if (!existsSync50(path22))
428529
428606
  return null;
428530
- const parsed = safeParseJSON(readFileSync49(path22, "utf-8"), false);
428607
+ const parsed = safeParseJSON(readFileSync50(path22, "utf-8"), false);
428531
428608
  return parsed && typeof parsed === "object" ? parsed : null;
428532
428609
  }
428533
428610
  function markStepComplete(cwd2, name, stepId) {
@@ -430117,11 +430194,11 @@ var init_workflow2 = __esm(() => {
430117
430194
  });
430118
430195
 
430119
430196
  // src/skills/skillSpec.ts
430120
- import { existsSync as existsSync52, mkdirSync as mkdirSync38, readFileSync as readFileSync50, readdirSync as readdirSync16, writeFileSync as writeFileSync37 } from "fs";
430197
+ import { existsSync as existsSync52, mkdirSync as mkdirSync38, readFileSync as readFileSync51, readdirSync as readdirSync16, writeFileSync as writeFileSync37 } from "fs";
430121
430198
  import { join as join170 } from "path";
430122
430199
  function readTextFile(path22) {
430123
430200
  try {
430124
- return readFileSync50(path22, "utf-8");
430201
+ return readFileSync51(path22, "utf-8");
430125
430202
  } catch {
430126
430203
  return;
430127
430204
  }
@@ -430423,7 +430500,7 @@ import {
430423
430500
  existsSync as existsSync53,
430424
430501
  lstatSync as lstatSync13,
430425
430502
  mkdirSync as mkdirSync39,
430426
- readFileSync as readFileSync51,
430503
+ readFileSync as readFileSync52,
430427
430504
  renameSync as renameSync11,
430428
430505
  unlinkSync as unlinkSync10,
430429
430506
  writeFileSync as writeFileSync38
@@ -430493,7 +430570,7 @@ function readPrivateKey(path22) {
430493
430570
  if (process.platform !== "win32" && (stat42.mode & 63) !== 0) {
430494
430571
  throw new Error("Signing key permissions are too broad; use chmod 600");
430495
430572
  }
430496
- return readFileSync51(path22);
430573
+ return readFileSync52(path22);
430497
430574
  }
430498
430575
  function writeTrustedKeys(keys2) {
430499
430576
  const path22 = trustedSkillKeysPath();
@@ -430958,7 +431035,7 @@ var init_worktree2 = __esm(() => {
430958
431035
 
430959
431036
  // src/services/agents/auditExport.ts
430960
431037
  import { createHash as createHash38 } from "crypto";
430961
- import { existsSync as existsSync54, readFileSync as readFileSync52 } from "fs";
431038
+ import { existsSync as existsSync54, readFileSync as readFileSync53 } from "fs";
430962
431039
  import { join as join172 } from "path";
430963
431040
  function chainHash(prev, payload) {
430964
431041
  return createHash38("sha256").update(prev).update(JSON.stringify(payload)).digest("hex");
@@ -430967,7 +431044,7 @@ function readActionsLedger(cwd2) {
430967
431044
  const path22 = join172(cwd2, ".ur", "actions.jsonl");
430968
431045
  if (!existsSync54(path22))
430969
431046
  return [];
430970
- return readFileSync52(path22, "utf-8").split(`
431047
+ return readFileSync53(path22, "utf-8").split(`
430971
431048
  `).filter(Boolean).map((line) => safeParseJSON(line, false)).filter((v) => !!v && typeof v === "object");
430972
431049
  }
430973
431050
  function collectAuditRecords(cwd2) {
@@ -431035,7 +431112,7 @@ var exports_audit = {};
431035
431112
  __export(exports_audit, {
431036
431113
  call: () => call72
431037
431114
  });
431038
- import { readFileSync as readFileSync53, writeFileSync as writeFileSync39 } from "fs";
431115
+ import { readFileSync as readFileSync54, writeFileSync as writeFileSync39 } from "fs";
431039
431116
  async function call72(args) {
431040
431117
  const tokens = args.trim().split(/\s+/).filter(Boolean);
431041
431118
  const action3 = tokens[0] ?? "export";
@@ -431044,7 +431121,7 @@ async function call72(args) {
431044
431121
  if (!file2) {
431045
431122
  return { type: "text", value: "Usage: ur audit verify <export.jsonl>" };
431046
431123
  }
431047
- const records2 = readFileSync53(file2, "utf-8").split(`
431124
+ const records2 = readFileSync54(file2, "utf-8").split(`
431048
431125
  `).filter(Boolean).map((line) => safeParseJSON(line, false)).filter((v) => !!v && typeof v === "object");
431049
431126
  const ok = verifyAuditChain(records2);
431050
431127
  return {
@@ -431303,7 +431380,7 @@ var exports_recipe = {};
431303
431380
  __export(exports_recipe, {
431304
431381
  call: () => call74
431305
431382
  });
431306
- import { existsSync as existsSync57, mkdirSync as mkdirSync40, readdirSync as readdirSync18, readFileSync as readFileSync54, writeFileSync as writeFileSync40 } from "fs";
431383
+ import { existsSync as existsSync57, mkdirSync as mkdirSync40, readdirSync as readdirSync18, readFileSync as readFileSync55, writeFileSync as writeFileSync40 } from "fs";
431307
431384
  import { join as join174 } from "path";
431308
431385
  function recipesDir(cwd2) {
431309
431386
  return join174(cwd2, ".ur", "recipes");
@@ -431312,7 +431389,7 @@ function loadRecipe(cwd2, name) {
431312
431389
  const path22 = join174(recipesDir(cwd2), `${name}.json`);
431313
431390
  if (!existsSync57(path22))
431314
431391
  return null;
431315
- const parsed = safeParseJSON(readFileSync54(path22, "utf-8"), false);
431392
+ const parsed = safeParseJSON(readFileSync55(path22, "utf-8"), false);
431316
431393
  if (!parsed || typeof parsed !== "object")
431317
431394
  return null;
431318
431395
  const r = parsed;
@@ -432298,7 +432375,7 @@ import {
432298
432375
  lstatSync as lstatSync14,
432299
432376
  mkdirSync as mkdirSync42,
432300
432377
  openSync as openSync10,
432301
- readFileSync as readFileSync55,
432378
+ readFileSync as readFileSync56,
432302
432379
  renameSync as renameSync12,
432303
432380
  statSync as statSync19,
432304
432381
  unlinkSync as unlinkSync11,
@@ -432467,7 +432544,7 @@ function loadCloudManifest(cwd2) {
432467
432544
  if (manifestInfo.size > MAX_CLOUD_MANIFEST_BYTES) {
432468
432545
  throw new Error("Cloud manifest exceeds the 8 MiB limit");
432469
432546
  }
432470
- const parsed = safeParseJSON(readFileSync55(path22, "utf8"), false);
432547
+ const parsed = safeParseJSON(readFileSync56(path22, "utf8"), false);
432471
432548
  if (!parsed || parsed.version !== 1 && parsed.version !== 2 || !Array.isArray(parsed.tasks)) {
432472
432549
  throw new Error("Cloud manifest is invalid");
432473
432550
  }
@@ -432551,7 +432628,7 @@ function loadCloudResult(cwd2, id) {
432551
432628
  if (lstatSync14(path22).size > MAX_CLOUD_MANIFEST_BYTES) {
432552
432629
  throw new Error("Cloud result exceeds the 8 MiB limit");
432553
432630
  }
432554
- return safeParseJSON(readFileSync55(path22, "utf-8"), false);
432631
+ return safeParseJSON(readFileSync56(path22, "utf-8"), false);
432555
432632
  }
432556
432633
  function createCloudTask(cwd2, input) {
432557
432634
  const taskText = input.task.trim();
@@ -432709,7 +432786,7 @@ function readCloudLog(cwd2, id, maxBytes = 1e6) {
432709
432786
  assertSafeStateNode(join176(cwd2, ".ur"), "directory");
432710
432787
  assertSafeStateNode(cloudDir(cwd2), "directory");
432711
432788
  assertSafeStateNode(path22, "file");
432712
- const buffer = readFileSync55(path22);
432789
+ const buffer = readFileSync56(path22);
432713
432790
  const boundedMax = boundedInteger(maxBytes, 1e6, 1, MAX_CLOUD_LOG_BYTES);
432714
432791
  return buffer.subarray(Math.max(0, buffer.length - boundedMax)).toString("utf8");
432715
432792
  }
@@ -433548,7 +433625,7 @@ import {
433548
433625
  existsSync as existsSync60,
433549
433626
  mkdirSync as mkdirSync44,
433550
433627
  readdirSync as readdirSync19,
433551
- readFileSync as readFileSync56,
433628
+ readFileSync as readFileSync57,
433552
433629
  statSync as statSync20,
433553
433630
  writeFileSync as writeFileSync44
433554
433631
  } from "fs";
@@ -433617,7 +433694,7 @@ function loadRepoMapForPrompt(cwd2, maxBytes = 4000) {
433617
433694
  const age = Date.now() - statSync20(path22).mtimeMs;
433618
433695
  if (age > 7 * 24 * 3600 * 1000)
433619
433696
  return null;
433620
- const body = readFileSync56(path22, "utf-8");
433697
+ const body = readFileSync57(path22, "utf-8");
433621
433698
  return body.length <= maxBytes ? body : `${body.slice(0, maxBytes)}
433622
433699
  \u2026 [map truncated]`;
433623
433700
  } catch {
@@ -433635,7 +433712,7 @@ function generateWiki(cwd2) {
433635
433712
  const symbols = loadSymbolIndex(cwd2);
433636
433713
  const stamp = new Date().toISOString();
433637
433714
  const pages = [];
433638
- const pkg = existsSync60(join178(cwd2, "package.json")) ? safeParseJSON(readFileSync56(join178(cwd2, "package.json"), "utf-8"), false) : null;
433715
+ const pkg = existsSync60(join178(cwd2, "package.json")) ? safeParseJSON(readFileSync57(join178(cwd2, "package.json"), "utf-8"), false) : null;
433639
433716
  const indexMd = [
433640
433717
  `# ${pkg?.name ?? "Project"} wiki`,
433641
433718
  "",
@@ -433706,7 +433783,7 @@ function installPostMergeHook(cwd2) {
433706
433783
  const hookPath = join178(hooksDir, "post-merge");
433707
433784
  const marker = "# ur-wiki-refresh";
433708
433785
  const line = `ur wiki generate --quiet >/dev/null 2>&1 || true ${marker}`;
433709
- const existing2 = existsSync60(hookPath) ? readFileSync56(hookPath, "utf-8") : `#!/bin/sh
433786
+ const existing2 = existsSync60(hookPath) ? readFileSync57(hookPath, "utf-8") : `#!/bin/sh
433710
433787
  `;
433711
433788
  if (existing2.includes(marker))
433712
433789
  return hookPath;
@@ -433805,7 +433882,7 @@ var init_wiki2 = __esm(() => {
433805
433882
  });
433806
433883
 
433807
433884
  // src/services/agents/dashboardRoutes.ts
433808
- import { existsSync as existsSync62, readdirSync as readdirSync20, readFileSync as readFileSync57 } from "fs";
433885
+ import { existsSync as existsSync62, readdirSync as readdirSync20, readFileSync as readFileSync58 } from "fs";
433809
433886
  import { join as join180 } from "path";
433810
433887
  function esc2(s) {
433811
433888
  return s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
@@ -433839,7 +433916,7 @@ async function handleDashboardRequest(cwd2, path22) {
433839
433916
  const threadMatch = path22.match(/^\/threads\/([\w.-]+)$/);
433840
433917
  if (threadMatch) {
433841
433918
  const file2 = join180(threadsDir(cwd2), `${threadMatch[1]}.html`);
433842
- return existsSync62(file2) ? { status: 200, type: "text/html", body: readFileSync57(file2, "utf-8") } : { status: 404, type: "text/plain", body: `Thread not found: ${threadMatch[1]}` };
433919
+ return existsSync62(file2) ? { status: 200, type: "text/html", body: readFileSync58(file2, "utf-8") } : { status: 404, type: "text/plain", body: `Thread not found: ${threadMatch[1]}` };
433843
433920
  }
433844
433921
  if (path22 !== "/dashboard" && path22 !== "/api/dashboard")
433845
433922
  return null;
@@ -433877,7 +433954,7 @@ var init_dashboardRoutes = __esm(() => {
433877
433954
  });
433878
433955
 
433879
433956
  // src/services/agents/artifactsServer.ts
433880
- import { createReadStream as createReadStream3, readFileSync as readFileSync58 } from "fs";
433957
+ import { createReadStream as createReadStream3, readFileSync as readFileSync59 } from "fs";
433881
433958
  import { createServer as createServer5 } from "http";
433882
433959
  import { createRequire as createRequire2 } from "module";
433883
433960
  function attachmentDelivery(mimeType) {
@@ -433891,7 +433968,7 @@ function loadAsset(path22) {
433891
433968
  const entry = ASSET_SPECS[path22];
433892
433969
  if (entry) {
433893
433970
  try {
433894
- content = readFileSync58(createRequire2(import.meta.url).resolve(entry.spec), "utf-8");
433971
+ content = readFileSync59(createRequire2(import.meta.url).resolve(entry.spec), "utf-8");
433895
433972
  } catch {
433896
433973
  content = null;
433897
433974
  }
@@ -434211,7 +434288,7 @@ var exports_thread = {};
434211
434288
  __export(exports_thread, {
434212
434289
  call: () => call77
434213
434290
  });
434214
- import { existsSync as existsSync63, mkdirSync as mkdirSync45, readdirSync as readdirSync21, readFileSync as readFileSync59, statSync as statSync22, writeFileSync as writeFileSync45 } from "fs";
434291
+ import { existsSync as existsSync63, mkdirSync as mkdirSync45, readdirSync as readdirSync21, readFileSync as readFileSync60, statSync as statSync22, writeFileSync as writeFileSync45 } from "fs";
434215
434292
  import { join as join181 } from "path";
434216
434293
  function esc3(s) {
434217
434294
  return s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#39;");
@@ -434274,7 +434351,7 @@ var SESSION_ID_PATTERN, call77 = async (args) => {
434274
434351
  transcriptPath = candidates2.map((name) => join181(dir, name)).sort((a2, b) => statSync22(b).mtimeMs - statSync22(a2).mtimeMs)[0];
434275
434352
  }
434276
434353
  const id = sessionId ?? `latest-${Date.now().toString(36)}`;
434277
- const lines = readFileSync59(transcriptPath, "utf-8").split(`
434354
+ const lines = readFileSync60(transcriptPath, "utf-8").split(`
434278
434355
  `).filter(Boolean);
434279
434356
  mkdirSync45(threadsDir(cwd2), { recursive: true });
434280
434357
  const out = join181(threadsDir(cwd2), `${id}.html`);
@@ -434327,7 +434404,7 @@ var init_thread2 = __esm(() => {
434327
434404
  });
434328
434405
 
434329
434406
  // src/services/agents/inspector.ts
434330
- import { existsSync as existsSync64, readFileSync as readFileSync60 } from "fs";
434407
+ import { existsSync as existsSync64, readFileSync as readFileSync61 } from "fs";
434331
434408
  function preview3(value2, max2 = PREVIEW_CHARS) {
434332
434409
  const text = value2.replace(/\s+/g, " ").trim();
434333
434410
  if (text.length <= max2)
@@ -434432,7 +434509,7 @@ function loadTranscript(path22) {
434432
434509
  if (!existsSync64(path22)) {
434433
434510
  throw new Error(`Transcript not found: ${path22}`);
434434
434511
  }
434435
- const raw = readFileSync60(path22, "utf-8").trim();
434512
+ const raw = readFileSync61(path22, "utf-8").trim();
434436
434513
  if (!raw)
434437
434514
  return [];
434438
434515
  if (raw.startsWith("[")) {
@@ -434709,7 +434786,7 @@ var init_embeddings2 = __esm(() => {
434709
434786
  import {
434710
434787
  existsSync as existsSync65,
434711
434788
  mkdirSync as mkdirSync46,
434712
- readFileSync as readFileSync61,
434789
+ readFileSync as readFileSync62,
434713
434790
  readdirSync as readdirSync22,
434714
434791
  statSync as statSync23,
434715
434792
  writeFileSync as writeFileSync46
@@ -434731,7 +434808,7 @@ function loadSources(cwd2) {
434731
434808
  const path22 = sourcesPath(cwd2);
434732
434809
  if (!existsSync65(path22))
434733
434810
  return [];
434734
- const parsed = safeParseJSON(readFileSync61(path22, "utf-8"), false);
434811
+ const parsed = safeParseJSON(readFileSync62(path22, "utf-8"), false);
434735
434812
  return Array.isArray(parsed) ? parsed : [];
434736
434813
  }
434737
434814
  function saveSources(cwd2, sources) {
@@ -434818,7 +434895,7 @@ function chunkFile(cwd2, source, absPath) {
434818
434895
  return [];
434819
434896
  let content;
434820
434897
  try {
434821
- content = readFileSync61(absPath, "utf-8");
434898
+ content = readFileSync62(absPath, "utf-8");
434822
434899
  } catch {
434823
434900
  return [];
434824
434901
  }
@@ -434918,7 +434995,7 @@ function loadIndex2(cwd2) {
434918
434995
  const path22 = indexPath2(cwd2);
434919
434996
  if (!existsSync65(path22))
434920
434997
  return null;
434921
- const parsed = safeParseJSON(readFileSync61(path22, "utf-8"), false);
434998
+ const parsed = safeParseJSON(readFileSync62(path22, "utf-8"), false);
434922
434999
  return parsed && typeof parsed === "object" ? parsed : null;
434923
435000
  }
434924
435001
  async function searchKnowledge(cwd2, query2, options2 = {}) {
@@ -435147,7 +435224,7 @@ var init_knowledge3 = __esm(() => {
435147
435224
  });
435148
435225
 
435149
435226
  // src/services/agents/crew.ts
435150
- import { existsSync as existsSync66, mkdirSync as mkdirSync47, readdirSync as readdirSync23, readFileSync as readFileSync62, unlinkSync as unlinkSync12, writeFileSync as writeFileSync47 } from "fs";
435227
+ import { existsSync as existsSync66, mkdirSync as mkdirSync47, readdirSync as readdirSync23, readFileSync as readFileSync63, unlinkSync as unlinkSync12, writeFileSync as writeFileSync47 } from "fs";
435151
435228
  import { join as join183 } from "path";
435152
435229
  function crewDir(cwd2) {
435153
435230
  return join183(cwd2, ".ur", "crew");
@@ -435165,13 +435242,13 @@ function listCrews(cwd2) {
435165
435242
  const dir = crewDir(cwd2);
435166
435243
  if (!existsSync66(dir))
435167
435244
  return [];
435168
- return readdirSync23(dir).filter((file2) => file2.endsWith(".json")).map((file2) => safeParseJSON(readFileSync62(join183(dir, file2), "utf-8"), false)).filter(isCrewSpec);
435245
+ return readdirSync23(dir).filter((file2) => file2.endsWith(".json")).map((file2) => safeParseJSON(readFileSync63(join183(dir, file2), "utf-8"), false)).filter(isCrewSpec);
435169
435246
  }
435170
435247
  function loadCrew(cwd2, name) {
435171
435248
  const path22 = crewPath(cwd2, name);
435172
435249
  if (!existsSync66(path22))
435173
435250
  return null;
435174
- const parsed = safeParseJSON(readFileSync62(path22, "utf-8"), false);
435251
+ const parsed = safeParseJSON(readFileSync63(path22, "utf-8"), false);
435175
435252
  return isCrewSpec(parsed) ? parsed : null;
435176
435253
  }
435177
435254
  function saveCrew(cwd2, spec) {
@@ -435780,7 +435857,7 @@ var init_crew3 = __esm(() => {
435780
435857
  });
435781
435858
 
435782
435859
  // src/services/agents/goals.ts
435783
- import { existsSync as existsSync67, mkdirSync as mkdirSync48, readdirSync as readdirSync24, readFileSync as readFileSync63, unlinkSync as unlinkSync13, writeFileSync as writeFileSync48 } from "fs";
435860
+ import { existsSync as existsSync67, mkdirSync as mkdirSync48, readdirSync as readdirSync24, readFileSync as readFileSync64, unlinkSync as unlinkSync13, writeFileSync as writeFileSync48 } from "fs";
435784
435861
  import { join as join184 } from "path";
435785
435862
  function goalsDir(cwd2) {
435786
435863
  return join184(cwd2, ".ur", "goals");
@@ -435795,7 +435872,7 @@ function listGoals(cwd2) {
435795
435872
  const dir = goalsDir(cwd2);
435796
435873
  if (!existsSync67(dir))
435797
435874
  return [];
435798
- return readdirSync24(dir).filter((file2) => file2.endsWith(".json")).map((file2) => safeParseJSON(readFileSync63(join184(dir, file2), "utf-8"), false)).filter((spec) => isGoalSpec(spec)).sort((a2, b) => a2.updatedAt < b.updatedAt ? 1 : -1);
435875
+ return readdirSync24(dir).filter((file2) => file2.endsWith(".json")).map((file2) => safeParseJSON(readFileSync64(join184(dir, file2), "utf-8"), false)).filter((spec) => isGoalSpec(spec)).sort((a2, b) => a2.updatedAt < b.updatedAt ? 1 : -1);
435799
435876
  }
435800
435877
  function isGoalSpec(value2) {
435801
435878
  return !!value2 && typeof value2 === "object" && typeof value2.name === "string" && typeof value2.objective === "string";
@@ -435804,7 +435881,7 @@ function loadGoal(cwd2, name) {
435804
435881
  const path22 = goalPath(cwd2, name);
435805
435882
  if (!existsSync67(path22))
435806
435883
  return null;
435807
- const parsed = safeParseJSON(readFileSync63(path22, "utf-8"), false);
435884
+ const parsed = safeParseJSON(readFileSync64(path22, "utf-8"), false);
435808
435885
  return isGoalSpec(parsed) ? parsed : null;
435809
435886
  }
435810
435887
  function saveGoal(cwd2, spec) {
@@ -436123,7 +436200,7 @@ var init_verificationProofs = __esm(() => {
436123
436200
  });
436124
436201
 
436125
436202
  // src/services/agents/kernel.ts
436126
- import { existsSync as existsSync68, readFileSync as readFileSync64 } from "fs";
436203
+ import { existsSync as existsSync68, readFileSync as readFileSync65 } from "fs";
436127
436204
  import { join as join185 } from "path";
436128
436205
  function defaultGuard(skipPermissions) {
436129
436206
  return {
@@ -436144,7 +436221,7 @@ function defaultMemory(cwd2) {
436144
436221
  loadMemorySnippet: (scope, agentType) => {
436145
436222
  const base2 = scope === "project" ? join185(cwd2, ".ur", "memory") : join185(cwd2, ".ur", "memory");
436146
436223
  const path22 = join185(base2, `${agentType}.md`);
436147
- const legacy = existsSync68(path22) ? readFileSync64(path22, "utf-8") : "";
436224
+ const legacy = existsSync68(path22) ? readFileSync65(path22, "utf-8") : "";
436148
436225
  if (scope !== "project")
436149
436226
  return legacy || null;
436150
436227
  try {
@@ -436550,7 +436627,7 @@ import {
436550
436627
  existsSync as existsSync69,
436551
436628
  mkdirSync as mkdirSync49,
436552
436629
  readdirSync as readdirSync25,
436553
- readFileSync as readFileSync65,
436630
+ readFileSync as readFileSync66,
436554
436631
  rmSync as rmSync14,
436555
436632
  writeFileSync as writeFileSync49
436556
436633
  } from "fs";
@@ -436574,13 +436651,13 @@ function listSpecs2(cwd2) {
436574
436651
  const dir = specsDir(cwd2);
436575
436652
  if (!existsSync69(dir))
436576
436653
  return [];
436577
- return readdirSync25(dir).filter((entry) => existsSync69(join186(dir, entry, "spec.json"))).map((entry) => safeParseJSON(readFileSync65(join186(dir, entry, "spec.json"), "utf-8"), false)).filter((m) => !!m && typeof m === "object" && ("goal" in m));
436654
+ return readdirSync25(dir).filter((entry) => existsSync69(join186(dir, entry, "spec.json"))).map((entry) => safeParseJSON(readFileSync66(join186(dir, entry, "spec.json"), "utf-8"), false)).filter((m) => !!m && typeof m === "object" && ("goal" in m));
436578
436655
  }
436579
436656
  function loadSpec(cwd2, name) {
436580
436657
  const path22 = metaPath(cwd2, name);
436581
436658
  if (!existsSync69(path22))
436582
436659
  return null;
436583
- const parsed = safeParseJSON(readFileSync65(path22, "utf-8"), false);
436660
+ const parsed = safeParseJSON(readFileSync66(path22, "utf-8"), false);
436584
436661
  return parsed && typeof parsed === "object" ? parsed : null;
436585
436662
  }
436586
436663
  function saveMeta(cwd2, meta) {
@@ -436590,7 +436667,7 @@ function saveMeta(cwd2, meta) {
436590
436667
  }
436591
436668
  function readPhase(cwd2, name, phase) {
436592
436669
  const path22 = join186(specDir(cwd2, name), phaseFile(phase));
436593
- return existsSync69(path22) ? readFileSync65(path22, "utf-8") : null;
436670
+ return existsSync69(path22) ? readFileSync66(path22, "utf-8") : null;
436594
436671
  }
436595
436672
  function writePhase(cwd2, name, phase, body) {
436596
436673
  mkdirSync49(specDir(cwd2, name), { recursive: true });
@@ -436851,7 +436928,7 @@ var init_spec = __esm(() => {
436851
436928
  });
436852
436929
 
436853
436930
  // src/services/agents/specVerifier.ts
436854
- import { existsSync as existsSync70, mkdirSync as mkdirSync50, readFileSync as readFileSync66, writeFileSync as writeFileSync50 } from "fs";
436931
+ import { existsSync as existsSync70, mkdirSync as mkdirSync50, readFileSync as readFileSync67, writeFileSync as writeFileSync50 } from "fs";
436855
436932
  import { join as join187 } from "path";
436856
436933
  function recordPath(cwd2, name) {
436857
436934
  return join187(cwd2, ".ur", "specs", name, RECORD_FILE);
@@ -436863,7 +436940,7 @@ function loadVerificationRecord(cwd2, name) {
436863
436940
  const path22 = recordPath(cwd2, name);
436864
436941
  if (!existsSync70(path22))
436865
436942
  return null;
436866
- const parsed = safeParseJSON(readFileSync66(path22, "utf-8"), false);
436943
+ const parsed = safeParseJSON(readFileSync67(path22, "utf-8"), false);
436867
436944
  if (!parsed || typeof parsed !== "object")
436868
436945
  return null;
436869
436946
  return parsed;
@@ -437330,7 +437407,7 @@ var init_spec3 = __esm(() => {
437330
437407
  });
437331
437408
 
437332
437409
  // src/services/agents/escalation.ts
437333
- import { existsSync as existsSync71, mkdirSync as mkdirSync51, readFileSync as readFileSync67, writeFileSync as writeFileSync51 } from "fs";
437410
+ import { existsSync as existsSync71, mkdirSync as mkdirSync51, readFileSync as readFileSync68, writeFileSync as writeFileSync51 } from "fs";
437334
437411
  import { join as join188 } from "path";
437335
437412
  function scoreOracle(model) {
437336
437413
  let score = (model.contextLength ?? 0) / 1000;
@@ -437519,7 +437596,7 @@ function loadPolicy(cwd2) {
437519
437596
  const path22 = policyPath(cwd2);
437520
437597
  if (!existsSync71(path22))
437521
437598
  return {};
437522
- const parsed = safeParseJSON(readFileSync67(path22, "utf-8"), false);
437599
+ const parsed = safeParseJSON(readFileSync68(path22, "utf-8"), false);
437523
437600
  return parsed && typeof parsed === "object" ? parsed : {};
437524
437601
  }
437525
437602
  function savePolicy(cwd2, policy) {
@@ -438372,7 +438449,7 @@ var exports_guardrails = {};
438372
438449
  __export(exports_guardrails, {
438373
438450
  call: () => call87
438374
438451
  });
438375
- import { existsSync as existsSync73, readFileSync as readFileSync68 } from "fs";
438452
+ import { existsSync as existsSync73, readFileSync as readFileSync69 } from "fs";
438376
438453
  function optionValue5(tokens, flag) {
438377
438454
  const index2 = tokens.indexOf(flag);
438378
438455
  return index2 >= 0 ? tokens[index2 + 1] : undefined;
@@ -438441,7 +438518,7 @@ var call87 = async (args) => {
438441
438518
  if (!existsSync73(filePath)) {
438442
438519
  return { type: "text", value: `File not found: ${filePath}` };
438443
438520
  }
438444
- text = readFileSync68(filePath, "utf-8");
438521
+ text = readFileSync69(filePath, "utf-8");
438445
438522
  } else {
438446
438523
  text = tokens.filter((token) => !token.startsWith("--") && token !== "check").join(" ");
438447
438524
  }
@@ -438479,7 +438556,7 @@ var init_guardrails3 = __esm(() => {
438479
438556
  });
438480
438557
 
438481
438558
  // src/services/agents/execTarget.ts
438482
- import { existsSync as existsSync74, mkdirSync as mkdirSync52, readFileSync as readFileSync69, writeFileSync as writeFileSync52 } from "fs";
438559
+ import { existsSync as existsSync74, mkdirSync as mkdirSync52, readFileSync as readFileSync70, writeFileSync as writeFileSync52 } from "fs";
438483
438560
  import { join as join190 } from "path";
438484
438561
  function isContainerized(config3) {
438485
438562
  return config3.kind !== "local";
@@ -438510,7 +438587,7 @@ function readDevcontainerImage(cwd2) {
438510
438587
  const path22 = join190(cwd2, ".devcontainer", "devcontainer.json");
438511
438588
  if (!existsSync74(path22))
438512
438589
  return;
438513
- const parsed = safeParseJSON(readFileSync69(path22, "utf-8"), false);
438590
+ const parsed = safeParseJSON(readFileSync70(path22, "utf-8"), false);
438514
438591
  if (parsed && typeof parsed === "object" && typeof parsed.image === "string") {
438515
438592
  return parsed.image;
438516
438593
  }
@@ -438529,7 +438606,7 @@ function resolveExecTarget(cwd2, env4 = process.env) {
438529
438606
  return { kind: "local" };
438530
438607
  const path22 = configPath(cwd2);
438531
438608
  if (existsSync74(path22)) {
438532
- const parsed = safeParseJSON(readFileSync69(path22, "utf-8"), false);
438609
+ const parsed = safeParseJSON(readFileSync70(path22, "utf-8"), false);
438533
438610
  if (parsed && typeof parsed === "object") {
438534
438611
  const config3 = parsed;
438535
438612
  if (config3.kind === "devcontainer" && !config3.image) {
@@ -439179,7 +439256,7 @@ var init_electronDesktopQaDriver = __esm(() => {
439179
439256
  import {
439180
439257
  existsSync as existsSync75,
439181
439258
  lstatSync as lstatSync16,
439182
- readFileSync as readFileSync70,
439259
+ readFileSync as readFileSync71,
439183
439260
  realpathSync as realpathSync13,
439184
439261
  readdirSync as readdirSync26,
439185
439262
  rmSync as rmSync15,
@@ -439246,7 +439323,7 @@ function loadDesktopQaFixture(path22) {
439246
439323
  }
439247
439324
  let input;
439248
439325
  try {
439249
- input = JSON.parse(readFileSync70(path22, "utf-8"));
439326
+ input = JSON.parse(readFileSync71(path22, "utf-8"));
439250
439327
  } catch (error40) {
439251
439328
  throw new Error(`Unable to parse desktop QA fixture: ${error40 instanceof Error ? error40.message : String(error40)}`);
439252
439329
  }
@@ -440432,7 +440509,7 @@ var exports_ci_loop = {};
440432
440509
  __export(exports_ci_loop, {
440433
440510
  call: () => call91
440434
440511
  });
440435
- import { existsSync as existsSync77, readFileSync as readFileSync71, statSync as statSync25 } from "fs";
440512
+ import { existsSync as existsSync77, readFileSync as readFileSync72, statSync as statSync25 } from "fs";
440436
440513
  import { resolve as resolve63 } from "path";
440437
440514
  function option17(tokens, name) {
440438
440515
  const index2 = tokens.indexOf(name);
@@ -440459,7 +440536,7 @@ var call91 = async (args) => {
440459
440536
  if (!existsSync77(logPath2)) {
440460
440537
  return { type: "text", value: `Log file not found: ${logPath2}` };
440461
440538
  }
440462
- seedError = readFileSync71(logPath2, "utf-8");
440539
+ seedError = readFileSync72(logPath2, "utf-8");
440463
440540
  }
440464
440541
  const target = resolveExecTarget(cwd2);
440465
440542
  const result = await runCiLoop({
@@ -440504,7 +440581,7 @@ var init_ci_loop2 = __esm(() => {
440504
440581
  // src/services/agents/testFirstLoop.ts
440505
440582
  import {
440506
440583
  mkdirSync as mkdirSync55,
440507
- readFileSync as readFileSync72,
440584
+ readFileSync as readFileSync73,
440508
440585
  writeFileSync as writeFileSync55
440509
440586
  } from "fs";
440510
440587
  import { dirname as dirname73, join as join194, relative as relative45 } from "path";
@@ -440541,7 +440618,7 @@ function writeFailureTrace(cwd2, traceDir, run3, result, now8) {
440541
440618
  }
440542
440619
  function readExistingVerifyConfig(path22) {
440543
440620
  try {
440544
- const parsed = JSON.parse(readFileSync72(path22, "utf8"));
440621
+ const parsed = JSON.parse(readFileSync73(path22, "utf8"));
440545
440622
  return parsed && typeof parsed === "object" ? parsed : {};
440546
440623
  } catch {
440547
440624
  return {};
@@ -441657,7 +441734,7 @@ var exports_trigger = {};
441657
441734
  __export(exports_trigger, {
441658
441735
  call: () => call96
441659
441736
  });
441660
- import { existsSync as existsSync78, readFileSync as readFileSync73 } from "fs";
441737
+ import { existsSync as existsSync78, readFileSync as readFileSync74 } from "fs";
441661
441738
  function option22(tokens, name) {
441662
441739
  const index2 = tokens.indexOf(name);
441663
441740
  if (index2 === -1)
@@ -441696,7 +441773,7 @@ ${usage22()}` };
441696
441773
  if (!existsSync78(file2)) {
441697
441774
  return { type: "text", value: `Payload file not found: ${file2}` };
441698
441775
  }
441699
- const payload = safeParseJSON(readFileSync73(file2, "utf-8"), false);
441776
+ const payload = safeParseJSON(readFileSync74(file2, "utf-8"), false);
441700
441777
  if (payload === null || typeof payload !== "object") {
441701
441778
  return { type: "text", value: `Payload is not valid JSON: ${file2}` };
441702
441779
  }
@@ -442188,7 +442265,7 @@ __export(exports_evals, {
442188
442265
  import {
442189
442266
  existsSync as existsSync80,
442190
442267
  mkdirSync as mkdirSync57,
442191
- readFileSync as readFileSync74,
442268
+ readFileSync as readFileSync75,
442192
442269
  readdirSync as readdirSync28,
442193
442270
  rmSync as rmSync16,
442194
442271
  writeFileSync as writeFileSync57
@@ -442670,7 +442747,7 @@ function readChildMetricsFile(path22) {
442670
442747
  if (!existsSync80(path22))
442671
442748
  return;
442672
442749
  try {
442673
- const parsed = safeParseJSON(readFileSync74(path22, "utf-8"), false);
442750
+ const parsed = safeParseJSON(readFileSync75(path22, "utf-8"), false);
442674
442751
  if (parsed && typeof parsed === "object")
442675
442752
  return parsed;
442676
442753
  } catch {}
@@ -443064,7 +443141,7 @@ function loadAllReports(cwd2) {
443064
443141
  for (const file2 of readdirSync28(dir)) {
443065
443142
  if (!file2.endsWith(".json") || file2.startsWith("reliability-"))
443066
443143
  continue;
443067
- const parsed = safeParseJSON(readFileSync74(join196(dir, file2), "utf-8"), false);
443144
+ const parsed = safeParseJSON(readFileSync75(join196(dir, file2), "utf-8"), false);
443068
443145
  if (parsed && typeof parsed === "object")
443069
443146
  reports.push(parsed);
443070
443147
  }
@@ -443078,7 +443155,7 @@ function loadAllReliability(cwd2) {
443078
443155
  for (const file2 of readdirSync28(dir)) {
443079
443156
  if (!file2.startsWith("reliability-") || !file2.endsWith(".json"))
443080
443157
  continue;
443081
- const parsed = safeParseJSON(readFileSync74(join196(dir, file2), "utf-8"), false);
443158
+ const parsed = safeParseJSON(readFileSync75(join196(dir, file2), "utf-8"), false);
443082
443159
  if (parsed && typeof parsed === "object")
443083
443160
  reports.push(parsed);
443084
443161
  }
@@ -443163,7 +443240,7 @@ function loadRunMetrics(cwd2, suiteName, caseId) {
443163
443240
  const path22 = join196(runsDir(cwd2, suiteName), `${caseId}.json`);
443164
443241
  if (!existsSync80(path22))
443165
443242
  return null;
443166
- const parsed = safeParseJSON(readFileSync74(path22, "utf-8"), false);
443243
+ const parsed = safeParseJSON(readFileSync75(path22, "utf-8"), false);
443167
443244
  if (!parsed || typeof parsed !== "object")
443168
443245
  return null;
443169
443246
  return parsed;
@@ -443228,7 +443305,7 @@ function loadSuite(cwd2, name) {
443228
443305
  if (!existsSync80(path22))
443229
443306
  return null;
443230
443307
  try {
443231
- return parseSuiteText(readFileSync74(path22, "utf-8"));
443308
+ return parseSuiteText(readFileSync75(path22, "utf-8"));
443232
443309
  } catch {
443233
443310
  return null;
443234
443311
  }
@@ -443386,7 +443463,7 @@ function buildBenchmarkSuite(adapter2, records, options3 = {}) {
443386
443463
  };
443387
443464
  }
443388
443465
  function importBenchmarkSuite(cwd2, adapter2, file2, options3 = {}) {
443389
- const records = parseBenchmarkRecords(readFileSync74(file2, "utf-8"));
443466
+ const records = parseBenchmarkRecords(readFileSync75(file2, "utf-8"));
443390
443467
  if (records.length === 0) {
443391
443468
  throw new Error(`No benchmark records found in ${file2}`);
443392
443469
  }
@@ -443412,7 +443489,7 @@ function loadReport(cwd2, name) {
443412
443489
  const path22 = join196(resultsDir(cwd2), `${suiteSlug(name)}.json`);
443413
443490
  if (!existsSync80(path22))
443414
443491
  return null;
443415
- const parsed = safeParseJSON(readFileSync74(path22, "utf-8"), false);
443492
+ const parsed = safeParseJSON(readFileSync75(path22, "utf-8"), false);
443416
443493
  return parsed && typeof parsed === "object" ? parsed : null;
443417
443494
  }
443418
443495
  function defaultEvalSuite() {
@@ -444458,7 +444535,7 @@ var init_dna2 = __esm(() => {
444458
444535
  });
444459
444536
 
444460
444537
  // src/services/agents/prSummary.ts
444461
- import { existsSync as existsSync81, readFileSync as readFileSync75 } from "fs";
444538
+ import { existsSync as existsSync81, readFileSync as readFileSync76 } from "fs";
444462
444539
  async function git5(cwd2, args) {
444463
444540
  return execFileNoThrowWithCwd(gitExe(), args, { cwd: cwd2, timeout: 30000, preserveOutputOnError: true });
444464
444541
  }
@@ -444498,7 +444575,7 @@ function detectTests(cwd2) {
444498
444575
  const pkgPath = `${cwd2}/package.json`;
444499
444576
  if (existsSync81(pkgPath)) {
444500
444577
  try {
444501
- const pkg = JSON.parse(readFileSync75(pkgPath, "utf-8"));
444578
+ const pkg = JSON.parse(readFileSync76(pkgPath, "utf-8"));
444502
444579
  for (const name of Object.keys(pkg.scripts ?? {})) {
444503
444580
  if (/^(test|t|check|lint|typecheck|ci)$/.test(name) || /^(test|check|lint):/.test(name)) {
444504
444581
  tests.push(`bun run ${name}`);
@@ -445984,7 +446061,7 @@ var init_remember2 = __esm(() => {
445984
446061
  import {
445985
446062
  existsSync as existsSync83,
445986
446063
  mkdirSync as mkdirSync59,
445987
- readFileSync as readFileSync76,
446064
+ readFileSync as readFileSync77,
445988
446065
  readdirSync as readdirSync29,
445989
446066
  writeFileSync as writeFileSync59
445990
446067
  } from "fs";
@@ -446002,7 +446079,7 @@ function loadMemoryRetentionPolicy(cwd2) {
446002
446079
  const path22 = policyPath2(cwd2);
446003
446080
  if (!existsSync83(path22))
446004
446081
  return defaultMemoryRetentionPolicy();
446005
- const parsed = safeParseJSON(readFileSync76(path22, "utf-8"), false);
446082
+ const parsed = safeParseJSON(readFileSync77(path22, "utf-8"), false);
446006
446083
  if (!parsed || typeof parsed !== "object")
446007
446084
  return defaultMemoryRetentionPolicy();
446008
446085
  const p2 = parsed;
@@ -446043,7 +446120,7 @@ function readJsonl2(file2) {
446043
446120
  if (!existsSync83(file2))
446044
446121
  return [];
446045
446122
  const records = [];
446046
- for (const line of readFileSync76(file2, "utf-8").split(`
446123
+ for (const line of readFileSync77(file2, "utf-8").split(`
446047
446124
  `)) {
446048
446125
  if (!line.trim())
446049
446126
  continue;
@@ -446205,7 +446282,7 @@ var exports_semantic_memory = {};
446205
446282
  __export(exports_semantic_memory, {
446206
446283
  call: () => call106
446207
446284
  });
446208
- import { existsSync as existsSync84, mkdirSync as mkdirSync60, readdirSync as readdirSync30, readFileSync as readFileSync77, statSync as statSync26, writeFileSync as writeFileSync60 } from "fs";
446285
+ import { existsSync as existsSync84, mkdirSync as mkdirSync60, readdirSync as readdirSync30, readFileSync as readFileSync78, statSync as statSync26, writeFileSync as writeFileSync60 } from "fs";
446209
446286
  import { basename as basename48, join as join201 } from "path";
446210
446287
  function indexPath3() {
446211
446288
  return join201(getCwd(), ".ur", "semantic-memory", "index", "index.json");
@@ -446242,7 +446319,7 @@ function chunkText2(source, text) {
446242
446319
  }));
446243
446320
  }
446244
446321
  function buildIndex2() {
446245
- const entries = sourceFiles().flatMap((file2) => chunkText2(file2, readFileSync77(file2, "utf-8")));
446322
+ const entries = sourceFiles().flatMap((file2) => chunkText2(file2, readFileSync78(file2, "utf-8")));
446246
446323
  const index2 = {
446247
446324
  version: 1,
446248
446325
  mode: "lexical",
@@ -446257,7 +446334,7 @@ function buildIndex2() {
446257
446334
  function loadIndex3() {
446258
446335
  if (!existsSync84(indexPath3()))
446259
446336
  return null;
446260
- const parsed = safeParseJSON(readFileSync77(indexPath3(), "utf-8"), false);
446337
+ const parsed = safeParseJSON(readFileSync78(indexPath3(), "utf-8"), false);
446261
446338
  return parsed && typeof parsed === "object" ? parsed : null;
446262
446339
  }
446263
446340
  function searchIndex(index2, query2) {
@@ -615596,7 +615673,7 @@ import { exec as exec8 } from "child_process";
615596
615673
  import {
615597
615674
  existsSync as existsSync85,
615598
615675
  mkdirSync as mkdirSync61,
615599
- readFileSync as readFileSync78,
615676
+ readFileSync as readFileSync79,
615600
615677
  readdirSync as readdirSync31,
615601
615678
  statSync as statSync27,
615602
615679
  writeFileSync as writeFileSync61
@@ -615719,7 +615796,7 @@ function buildRepoEditIndex(root2) {
615719
615796
  let content = "";
615720
615797
  if (text && stat42.size <= 1e6) {
615721
615798
  try {
615722
- content = readFileSync78(abs, "utf-8");
615799
+ content = readFileSync79(abs, "utf-8");
615723
615800
  } catch {
615724
615801
  content = "";
615725
615802
  }
@@ -615750,7 +615827,7 @@ function loadRepoEditIndex(root2) {
615750
615827
  const path22 = repoEditIndexPath(root2);
615751
615828
  if (!existsSync85(path22))
615752
615829
  return null;
615753
- const parsed = safeParseJSON(readFileSync78(path22, "utf-8"), false);
615830
+ const parsed = safeParseJSON(readFileSync79(path22, "utf-8"), false);
615754
615831
  return parsed && typeof parsed === "object" ? parsed : null;
615755
615832
  }
615756
615833
  function searchRepoEditIndex(root2, query2, index2 = loadRepoEditIndex(root2) ?? buildRepoEditIndex(root2)) {
@@ -615776,7 +615853,7 @@ function searchRepoEditIndex(root2, query2, index2 = loadRepoEditIndex(root2) ??
615776
615853
  const lines = [];
615777
615854
  if (file2.text && score > 0) {
615778
615855
  try {
615779
- const content = readFileSync78(join202(root2, file2.path), "utf-8");
615856
+ const content = readFileSync79(join202(root2, file2.path), "utf-8");
615780
615857
  const split = content.split(`
615781
615858
  `);
615782
615859
  for (let i3 = 0;i3 < split.length && lines.length < 4; i3++) {
@@ -615833,7 +615910,7 @@ function planRename(root2, from, to) {
615833
615910
  const abs = join202(root2, file2);
615834
615911
  let oldContent;
615835
615912
  try {
615836
- oldContent = readFileSync78(abs, "utf-8");
615913
+ oldContent = readFileSync79(abs, "utf-8");
615837
615914
  } catch {
615838
615915
  return [];
615839
615916
  }
@@ -616423,7 +616500,7 @@ import {
616423
616500
  chmodSync as chmodSync11,
616424
616501
  existsSync as existsSync86,
616425
616502
  mkdirSync as mkdirSync62,
616426
- readFileSync as readFileSync79,
616503
+ readFileSync as readFileSync80,
616427
616504
  realpathSync as realpathSync16,
616428
616505
  renameSync as renameSync14,
616429
616506
  rmSync as rmSync18,
@@ -616523,7 +616600,7 @@ function applyWorkspaceEdit(root2, edit2) {
616523
616600
  const edits = normalizeFileEdits(file2, rawEdits);
616524
616601
  const abs = resolveWorkspaceFile(root2, file2);
616525
616602
  const existed = existsSync86(abs);
616526
- const oldContent = existed ? readFileSync79(abs, "utf-8") : "";
616603
+ const oldContent = existed ? readFileSync80(abs, "utf-8") : "";
616527
616604
  const mode = existed ? statSync28(abs).mode : undefined;
616528
616605
  const newContent = applyFileEdits(oldContent, edits);
616529
616606
  snapshots.set(file2, { content: oldContent, existed, mode });
@@ -616566,7 +616643,7 @@ function formatWorkspaceEditAsPatch(root2, edit2) {
616566
616643
  for (const [file2] of byFile) {
616567
616644
  const safeFile = workspaceRelativePath(root2, file2);
616568
616645
  const abs = resolveWorkspaceFile(root2, safeFile);
616569
- const oldContent = existsSync86(abs) ? readFileSync79(abs, "utf-8") : "";
616646
+ const oldContent = existsSync86(abs) ? readFileSync80(abs, "utf-8") : "";
616570
616647
  const sorted = [...byFile.get(file2) ?? []].sort((a2, b) => b.start - a2.start);
616571
616648
  const newContent = applyFileEdits(oldContent, sorted);
616572
616649
  pieces.push(createTwoFilesPatch(`a/${file2}`, `b/${file2}`, oldContent, newContent, undefined, undefined, { context: 3 }));
@@ -616582,7 +616659,7 @@ function workspaceEditFromLsp(root2, lspEdit) {
616582
616659
  const changes = "changes" in lspEdit && lspEdit.changes && typeof lspEdit.changes === "object" ? lspEdit.changes : {};
616583
616660
  for (const [uri, textEdits] of Object.entries(changes)) {
616584
616661
  const abs = uriToAbsolutePath(root2, uri);
616585
- const content = readFileSync79(abs, "utf-8");
616662
+ const content = readFileSync80(abs, "utf-8");
616586
616663
  const file2 = absoluteToRelative(root2, abs);
616587
616664
  for (const raw of Array.isArray(textEdits) ? textEdits : []) {
616588
616665
  const converted = lspTextEditToEdit(file2, content, raw);
@@ -616597,7 +616674,7 @@ function workspaceEditFromLsp(root2, lspEdit) {
616597
616674
  if (!uri)
616598
616675
  continue;
616599
616676
  const abs = uriToAbsolutePath(root2, uri);
616600
- const content = readFileSync79(abs, "utf-8");
616677
+ const content = readFileSync80(abs, "utf-8");
616601
616678
  const file2 = absoluteToRelative(root2, abs);
616602
616679
  const textEdits = "edits" in change && Array.isArray(change.edits) ? change.edits : [];
616603
616680
  for (const raw of textEdits) {
@@ -616662,7 +616739,7 @@ var init_workspaceEdit = __esm(() => {
616662
616739
  });
616663
616740
 
616664
616741
  // src/services/repoEditing/ast/lspEditEngine.ts
616665
- import { readFileSync as readFileSync80 } from "fs";
616742
+ import { readFileSync as readFileSync81 } from "fs";
616666
616743
  import { pathToFileURL as pathToFileURL8 } from "url";
616667
616744
  async function getManager() {
616668
616745
  if (!manager) {
@@ -616680,7 +616757,7 @@ async function shutdownLspManager() {
616680
616757
  async function lspRename(root2, file2, line, column, newName) {
616681
616758
  const mgr = await getManager();
616682
616759
  const abs = resolveWorkspaceFile(root2, file2);
616683
- const content = readFileSync80(abs, "utf-8");
616760
+ const content = readFileSync81(abs, "utf-8");
616684
616761
  await mgr.openFile(abs, content);
616685
616762
  const prepare = await mgr.sendRequest(abs, "textDocument/prepareRename", {
616686
616763
  textDocument: { uri: pathToFileURL8(abs).href },
@@ -616705,7 +616782,7 @@ var init_lspEditEngine = __esm(() => {
616705
616782
 
616706
616783
  // src/services/repoEditing/ast/typescriptEngine.ts
616707
616784
  import { dirname as dirname78, join as join204, relative as relative50 } from "path";
616708
- import { existsSync as existsSync87, readFileSync as readFileSync81 } from "fs";
616785
+ import { existsSync as existsSync87, readFileSync as readFileSync82 } from "fs";
616709
616786
  function loadProgram(root2, files) {
616710
616787
  const configPath2 = import_typescript3.default.findConfigFile(root2, import_typescript3.default.sys.fileExists, "tsconfig.json");
616711
616788
  let program;
@@ -616808,7 +616885,7 @@ function addOldText(root2, edits) {
616808
616885
  let content = contentByFile.get(edit2.file);
616809
616886
  if (content === undefined) {
616810
616887
  const abs = resolveWorkspaceFile(root2, edit2.file);
616811
- content = existsSync87(abs) ? readFileSync81(abs, "utf-8") : "";
616888
+ content = existsSync87(abs) ? readFileSync82(abs, "utf-8") : "";
616812
616889
  contentByFile.set(edit2.file, content);
616813
616890
  }
616814
616891
  return { ...edit2, oldText: content.slice(edit2.start, edit2.end) };
@@ -617023,7 +617100,7 @@ function tsOrganizeImports(ctx, options4) {
617023
617100
  });
617024
617101
  for (const file2 of files) {
617025
617102
  const abs = resolveWorkspaceFile(root2, file2);
617026
- const content = readFileSync81(abs, "utf-8");
617103
+ const content = readFileSync82(abs, "utf-8");
617027
617104
  const changes = service.organizeImports({ type: "file", fileName: abs, mode: import_typescript3.default.OrganizeImportsMode.SortAndCombine }, {}, { organizeImportsIgnoreCase: "auto" });
617028
617105
  for (const change of changes) {
617029
617106
  const safeFile = workspaceRelativePath(root2, change.fileName);
@@ -617138,7 +617215,7 @@ var init_typescriptEngine = __esm(() => {
617138
617215
  });
617139
617216
 
617140
617217
  // src/services/repoEditing/ast/treeSitterEngine.ts
617141
- import { readFileSync as readFileSync82 } from "fs";
617218
+ import { readFileSync as readFileSync83 } from "fs";
617142
617219
  function tryLoadNativeParser(language) {
617143
617220
  try {
617144
617221
  const Parser2 = __require(`@tree-sitter/${language}`);
@@ -617190,7 +617267,7 @@ function treeSitterRename(options4, language) {
617190
617267
  const adapter2 = getAdapter3(language);
617191
617268
  for (const file2 of files) {
617192
617269
  const abs = file2.startsWith("/") ? file2 : `${root2}/${file2}`;
617193
- const content = readFileSync82(abs, "utf-8");
617270
+ const content = readFileSync83(abs, "utf-8");
617194
617271
  const tree = adapter2.parse(file2, content);
617195
617272
  const identifiers = collectIdentifiers(tree, from, adapter2);
617196
617273
  for (const node of identifiers) {
@@ -617984,7 +618061,7 @@ var init_cite2 = __esm(() => {
617984
618061
  });
617985
618062
 
617986
618063
  // src/ur/fileops.ts
617987
- import { existsSync as existsSync89, mkdirSync as mkdirSync63, readdirSync as readdirSync32, readFileSync as readFileSync83, statSync as statSync29, writeFileSync as writeFileSync63 } from "fs";
618064
+ import { existsSync as existsSync89, mkdirSync as mkdirSync63, readdirSync as readdirSync32, readFileSync as readFileSync84, statSync as statSync29, writeFileSync as writeFileSync63 } from "fs";
617988
618065
  import { extname as extname21, isAbsolute as isAbsolute46, join as join205, relative as relative51, resolve as resolve67 } from "path";
617989
618066
  function readFileSafe2(cwd2, target, maxBytes = 64000) {
617990
618067
  const abs = isAbsolute46(target) ? target : resolve67(cwd2, target);
@@ -617996,7 +618073,7 @@ function readFileSafe2(cwd2, target, maxBytes = 64000) {
617996
618073
  if (!isTextLike(abs))
617997
618074
  return { ok: false, error: `not a text file (${extname21(abs) || "no ext"}). For images use /image, for video /video, for PDFs/docs ask UR to read it.` };
617998
618075
  try {
617999
- let content = readFileSync83(abs, "utf8");
618076
+ let content = readFileSync84(abs, "utf8");
618000
618077
  if (content.length > maxBytes)
618001
618078
  content = content.slice(0, maxBytes) + `
618002
618079
  \u2026 [truncated at ${maxBytes} bytes]`;
@@ -618038,7 +618115,7 @@ function searchFiles(cwd2, query2, maxResults = 60) {
618038
618115
  continue;
618039
618116
  let lines;
618040
618117
  try {
618041
- lines = readFileSync83(join205(cwd2, rel), "utf8").split(`
618118
+ lines = readFileSync84(join205(cwd2, rel), "utf8").split(`
618042
618119
  `);
618043
618120
  } catch {
618044
618121
  continue;
@@ -618482,13 +618559,13 @@ var exports_mode = {};
618482
618559
  __export(exports_mode, {
618483
618560
  call: () => call122
618484
618561
  });
618485
- import { existsSync as existsSync92, mkdirSync as mkdirSync64, readFileSync as readFileSync84, writeFileSync as writeFileSync64 } from "fs";
618562
+ import { existsSync as existsSync92, mkdirSync as mkdirSync64, readFileSync as readFileSync85, writeFileSync as writeFileSync64 } from "fs";
618486
618563
  import { join as join206 } from "path";
618487
618564
  var MODES2, SECURITY_MODES2, file2 = (cwd2) => join206(cwd2, ".ur", "mode"), call122 = async (args) => {
618488
618565
  const want = (args ?? "").trim().toLowerCase();
618489
618566
  const f = file2(getCwd());
618490
618567
  if (!want) {
618491
- const cur = existsSync92(f) ? readFileSync84(f, "utf8").trim() : "code";
618568
+ const cur = existsSync92(f) ? readFileSync85(f, "utf8").trim() : "code";
618492
618569
  return { type: "text", value: `mode: ${cur}
618493
618570
  available: ${MODES2.join(", ")}
618494
618571
  security: ${SECURITY_MODES2.join(", ")}` };
@@ -618736,7 +618813,7 @@ var init_role_mode2 = __esm(() => {
618736
618813
  });
618737
618814
 
618738
618815
  // src/ur/researchGraph.ts
618739
- import { appendFileSync as appendFileSync8, existsSync as existsSync94, mkdirSync as mkdirSync66, readFileSync as readFileSync85 } from "fs";
618816
+ import { appendFileSync as appendFileSync8, existsSync as existsSync94, mkdirSync as mkdirSync66, readFileSync as readFileSync86 } from "fs";
618740
618817
  import { dirname as dirname79, join as join208 } from "path";
618741
618818
  function isEntity(s) {
618742
618819
  return ENTITIES.includes(s);
@@ -618754,7 +618831,7 @@ function listEntity(cwd2, entity) {
618754
618831
  if (!existsSync94(f))
618755
618832
  return [];
618756
618833
  const out = [];
618757
- for (const line of readFileSync85(f, "utf8").split(`
618834
+ for (const line of readFileSync86(f, "utf8").split(`
618758
618835
  `).filter(Boolean)) {
618759
618836
  try {
618760
618837
  out.push(JSON.parse(line));
@@ -632572,7 +632649,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
632572
632649
  smapsRollup,
632573
632650
  platform: process.platform,
632574
632651
  nodeVersion: process.version,
632575
- ccVersion: "1.57.0"
632652
+ ccVersion: "1.57.2"
632576
632653
  };
632577
632654
  }
632578
632655
  async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
@@ -633152,7 +633229,7 @@ var init_bridge_kick = __esm(() => {
633152
633229
  var call149 = async () => {
633153
633230
  return {
633154
633231
  type: "text",
633155
- value: "1.57.0"
633232
+ value: "1.57.2"
633156
633233
  };
633157
633234
  }, version2, version_default;
633158
633235
  var init_version = __esm(() => {
@@ -644223,7 +644300,7 @@ function generateHtmlReport(data, insights) {
644223
644300
  </html>`;
644224
644301
  }
644225
644302
  function buildExportData(data, insights, facets, remoteStats) {
644226
- const version3 = typeof MACRO !== "undefined" ? "1.57.0" : "unknown";
644303
+ const version3 = typeof MACRO !== "undefined" ? "1.57.2" : "unknown";
644227
644304
  const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
644228
644305
  const facets_summary = {
644229
644306
  total: facets.size,
@@ -648526,7 +648603,7 @@ var init_sessionStorage = __esm(() => {
648526
648603
  init_settings2();
648527
648604
  init_slowOperations();
648528
648605
  init_uuid();
648529
- VERSION7 = typeof MACRO !== "undefined" ? "1.57.0" : "unknown";
648606
+ VERSION7 = typeof MACRO !== "undefined" ? "1.57.2" : "unknown";
648530
648607
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
648531
648608
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
648532
648609
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -649741,7 +649818,7 @@ var init_filesystem = __esm(() => {
649741
649818
  });
649742
649819
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
649743
649820
  const nonce = randomBytes20(16).toString("hex");
649744
- return join227(getURTempDir(), "bundled-skills", "1.57.0", nonce);
649821
+ return join227(getURTempDir(), "bundled-skills", "1.57.2", nonce);
649745
649822
  });
649746
649823
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
649747
649824
  });
@@ -656036,7 +656113,7 @@ function computeFingerprint(messageText2, version3) {
656036
656113
  }
656037
656114
  function computeFingerprintFromMessages(messages) {
656038
656115
  const firstMessageText = extractFirstMessageText(messages);
656039
- return computeFingerprint(firstMessageText, "1.57.0");
656116
+ return computeFingerprint(firstMessageText, "1.57.2");
656040
656117
  }
656041
656118
  var FINGERPRINT_SALT = "59cf53e54c78";
656042
656119
  var init_fingerprint = () => {};
@@ -657932,7 +658009,7 @@ async function sideQuery(opts) {
657932
658009
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
657933
658010
  }
657934
658011
  const messageText2 = extractFirstUserMessageText(messages);
657935
- const fingerprint2 = computeFingerprint(messageText2, "1.57.0");
658012
+ const fingerprint2 = computeFingerprint(messageText2, "1.57.2");
657936
658013
  const attributionHeader = getAttributionHeader(fingerprint2);
657937
658014
  const systemBlocks = [
657938
658015
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -662703,7 +662780,7 @@ function buildSystemInitMessage(inputs) {
662703
662780
  slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
662704
662781
  apiKeySource: getURHQApiKeyWithSource().source,
662705
662782
  betas: getSdkBetas(),
662706
- ur_version: "1.57.0",
662783
+ ur_version: "1.57.2",
662707
662784
  output_style: outputStyle2,
662708
662785
  agents: inputs.agents.map((agent2) => agent2.agentType),
662709
662786
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
@@ -676563,7 +676640,7 @@ var init_useVoiceEnabled = __esm(() => {
676563
676640
  function getSemverPart(version3) {
676564
676641
  return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
676565
676642
  }
676566
- function useUpdateNotification(updatedVersion, initialVersion = "1.57.0") {
676643
+ function useUpdateNotification(updatedVersion, initialVersion = "1.57.2") {
676567
676644
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react222.useState(() => getSemverPart(initialVersion));
676568
676645
  if (!updatedVersion) {
676569
676646
  return null;
@@ -676612,7 +676689,7 @@ function AutoUpdater({
676612
676689
  return;
676613
676690
  }
676614
676691
  if (false) {}
676615
- const currentVersion = "1.57.0";
676692
+ const currentVersion = "1.57.2";
676616
676693
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
676617
676694
  let latestVersion = await getLatestVersion(channel);
676618
676695
  const isDisabled = isAutoUpdaterDisabled();
@@ -676841,12 +676918,12 @@ function NativeAutoUpdater({
676841
676918
  logEvent("tengu_native_auto_updater_start", {});
676842
676919
  try {
676843
676920
  const maxVersion = await getMaxVersion();
676844
- if (maxVersion && gt("1.57.0", maxVersion)) {
676921
+ if (maxVersion && gt("1.57.2", maxVersion)) {
676845
676922
  const msg = await getMaxVersionMessage();
676846
676923
  setMaxVersionIssue(msg ?? "affects your version");
676847
676924
  }
676848
676925
  const result = await installLatest(channel);
676849
- const currentVersion = "1.57.0";
676926
+ const currentVersion = "1.57.2";
676850
676927
  const latencyMs = Date.now() - startTime;
676851
676928
  if (result.lockFailed) {
676852
676929
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -676983,17 +677060,17 @@ function PackageManagerAutoUpdater(t0) {
676983
677060
  const maxVersion = await getMaxVersion();
676984
677061
  if (maxVersion && latest && gt(latest, maxVersion)) {
676985
677062
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
676986
- if (gte("1.57.0", maxVersion)) {
676987
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.57.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
677063
+ if (gte("1.57.2", maxVersion)) {
677064
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.57.2"} is already at or above maxVersion ${maxVersion}, skipping update`);
676988
677065
  setUpdateAvailable(false);
676989
677066
  return;
676990
677067
  }
676991
677068
  latest = maxVersion;
676992
677069
  }
676993
- const hasUpdate = latest && !gte("1.57.0", latest) && !shouldSkipVersion(latest);
677070
+ const hasUpdate = latest && !gte("1.57.2", latest) && !shouldSkipVersion(latest);
676994
677071
  setUpdateAvailable(!!hasUpdate);
676995
677072
  if (hasUpdate) {
676996
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.57.0"} -> ${latest}`);
677073
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.57.2"} -> ${latest}`);
676997
677074
  }
676998
677075
  };
676999
677076
  $2[0] = t1;
@@ -677027,7 +677104,7 @@ function PackageManagerAutoUpdater(t0) {
677027
677104
  wrap: "truncate",
677028
677105
  children: [
677029
677106
  "currentVersion: ",
677030
- "1.57.0"
677107
+ "1.57.2"
677031
677108
  ]
677032
677109
  }, undefined, true, undefined, this);
677033
677110
  $2[3] = verbose;
@@ -687724,7 +687801,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
687724
687801
  project_dir: getOriginalCwd(),
687725
687802
  added_dirs: addedDirs
687726
687803
  },
687727
- version: "1.57.0",
687804
+ version: "1.57.2",
687728
687805
  output_style: {
687729
687806
  name: outputStyleName
687730
687807
  },
@@ -687807,7 +687884,7 @@ function StatusLineInner({
687807
687884
  const taskValues = Object.values(tasks2);
687808
687885
  const taskRunningCount = taskValues.filter((task2) => task2.status === "running" || task2.status === "pending").length;
687809
687886
  const defaultStatusLineText = buildDefaultStatusBar({
687810
- version: "1.57.0",
687887
+ version: "1.57.2",
687811
687888
  providerLabel: providerRuntime.providerLabel,
687812
687889
  authMode: providerRuntime.authLabel,
687813
687890
  model: providerRuntime.model ?? renderModelName(mainLoopModel),
@@ -699950,7 +700027,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
699950
700027
  } catch {}
699951
700028
  const data = {
699952
700029
  trigger: trigger2,
699953
- version: "1.57.0",
700030
+ version: "1.57.2",
699954
700031
  platform: process.platform,
699955
700032
  transcript,
699956
700033
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -712230,7 +712307,7 @@ function WelcomeV2() {
712230
712307
  dimColor: true,
712231
712308
  children: [
712232
712309
  "v",
712233
- "1.57.0"
712310
+ "1.57.2"
712234
712311
  ]
712235
712312
  }, undefined, true, undefined, this)
712236
712313
  ]
@@ -713490,7 +713567,7 @@ function completeOnboarding() {
713490
713567
  saveGlobalConfig((current) => ({
713491
713568
  ...current,
713492
713569
  hasCompletedOnboarding: true,
713493
- lastOnboardingVersion: "1.57.0"
713570
+ lastOnboardingVersion: "1.57.2"
713494
713571
  }));
713495
713572
  }
713496
713573
  function showDialog(root2, renderer) {
@@ -718534,7 +718611,7 @@ function appendToLog(path24, message) {
718534
718611
  cwd: getFsImplementation().cwd(),
718535
718612
  userType: process.env.USER_TYPE,
718536
718613
  sessionId: getSessionId(),
718537
- version: "1.57.0"
718614
+ version: "1.57.2"
718538
718615
  };
718539
718616
  getLogWriter(path24).write(messageWithTimestamp);
718540
718617
  }
@@ -722693,8 +722770,8 @@ async function getEnvLessBridgeConfig() {
722693
722770
  }
722694
722771
  async function checkEnvLessBridgeMinVersion() {
722695
722772
  const cfg = await getEnvLessBridgeConfig();
722696
- if (cfg.min_version && lt("1.57.0", cfg.min_version)) {
722697
- return `Your version of UR (${"1.57.0"}) is too old for Remote Control.
722773
+ if (cfg.min_version && lt("1.57.2", cfg.min_version)) {
722774
+ return `Your version of UR (${"1.57.2"}) is too old for Remote Control.
722698
722775
  Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
722699
722776
  }
722700
722777
  return null;
@@ -723168,7 +723245,7 @@ async function initBridgeCore(params) {
723168
723245
  const rawApi = createBridgeApiClient({
723169
723246
  baseUrl,
723170
723247
  getAccessToken,
723171
- runnerVersion: "1.57.0",
723248
+ runnerVersion: "1.57.2",
723172
723249
  onDebug: logForDebugging,
723173
723250
  onAuth401,
723174
723251
  getTrustedDeviceToken
@@ -732640,7 +732717,7 @@ function getAgUiCapabilities() {
732640
732717
  name: "UR-Nexus",
732641
732718
  type: "ur-nexus",
732642
732719
  description: "Provider-flexible, local-first autonomous engineering workflow agent.",
732643
- version: "1.57.0",
732720
+ version: "1.57.2",
732644
732721
  provider: "UR",
732645
732722
  documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
732646
732723
  },
@@ -733780,7 +733857,7 @@ function createMCPServer(cwd4, debug2, verbose) {
733780
733857
  };
733781
733858
  const server2 = new Server({
733782
733859
  name: "ur-nexus",
733783
- version: "1.57.0"
733860
+ version: "1.57.2"
733784
733861
  }, {
733785
733862
  capabilities: {
733786
733863
  tools: {}
@@ -733934,7 +734011,7 @@ import {
733934
734011
  lstatSync as lstatSync19,
733935
734012
  mkdirSync as mkdirSync69,
733936
734013
  openSync as openSync12,
733937
- readFileSync as readFileSync86,
734014
+ readFileSync as readFileSync87,
733938
734015
  renameSync as renameSync15,
733939
734016
  statSync as statSync31,
733940
734017
  unlinkSync as unlinkSync15,
@@ -734044,7 +734121,7 @@ class DurableMcp2026TaskStore {
734044
734121
  quarantineTaskManifest(path24);
734045
734122
  return { version: TASK_MANIFEST_VERSION, tasks: [] };
734046
734123
  }
734047
- const parsed = JSON.parse(readFileSync86(path24, "utf8"));
734124
+ const parsed = JSON.parse(readFileSync87(path24, "utf8"));
734048
734125
  if (!isRecord6(parsed) || parsed.version !== TASK_MANIFEST_VERSION || !Array.isArray(parsed.tasks)) {
734049
734126
  quarantineTaskManifest(path24);
734050
734127
  return { version: TASK_MANIFEST_VERSION, tasks: [] };
@@ -734938,7 +735015,7 @@ function thrownResponse(error40) {
734938
735015
  }
734939
735016
  async function createUrMcp2026Runtime(options4) {
734940
735017
  const server2 = createMCPServer(options4.cwd, options4.debug === true, options4.verbose === true);
734941
- const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.57.0" }, { capabilities: {} });
735018
+ const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.57.2" }, { capabilities: {} });
734942
735019
  const [clientTransport, serverTransport] = createLinkedTransportPair();
734943
735020
  try {
734944
735021
  await server2.connect(serverTransport);
@@ -734949,7 +735026,7 @@ async function createUrMcp2026Runtime(options4) {
734949
735026
  }
734950
735027
  const runtime2 = new Mcp2026Runtime({
734951
735028
  cwd: options4.cwd,
734952
- version: "1.57.0",
735029
+ version: "1.57.2",
734953
735030
  backend: {
734954
735031
  listTools: async () => {
734955
735032
  const listed = await client2.listTools();
@@ -735752,7 +735829,7 @@ var init_providers2 = __esm(() => {
735752
735829
  });
735753
735830
 
735754
735831
  // src/utils/plugins/pluginDoctor.ts
735755
- import { existsSync as existsSync99, readdirSync as readdirSync34, readFileSync as readFileSync87, statSync as statSync32 } from "fs";
735832
+ import { existsSync as existsSync99, readdirSync as readdirSync34, readFileSync as readFileSync88, statSync as statSync32 } from "fs";
735756
735833
  import { basename as basename68, join as join247 } from "path";
735757
735834
  function manifestPathFor2(dir) {
735758
735835
  const p2 = join247(dir, ".ur-plugin", "plugin.json");
@@ -735807,7 +735884,7 @@ function doctorPluginDir(dir) {
735807
735884
  }
735808
735885
  let parsed;
735809
735886
  try {
735810
- parsed = JSON.parse(readFileSync87(manifestPath6, "utf8"));
735887
+ parsed = JSON.parse(readFileSync88(manifestPath6, "utf8"));
735811
735888
  } catch (error40) {
735812
735889
  return {
735813
735890
  name: basename68(dir),
@@ -737082,7 +737159,7 @@ async function update() {
737082
737159
  logEvent("tengu_update_check", {});
737083
737160
  const diagnostic2 = await getDoctorDiagnostic();
737084
737161
  const result = await checkUpgradeStatus({
737085
- currentVersion: "1.57.0",
737162
+ currentVersion: "1.57.2",
737086
737163
  packageName: UR_AGENT_PACKAGE_NAME,
737087
737164
  installationType: diagnostic2.installationType,
737088
737165
  latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
@@ -737109,7 +737186,7 @@ __export(exports_main, {
737109
737186
  startDeferredPrefetches: () => startDeferredPrefetches,
737110
737187
  main: () => main
737111
737188
  });
737112
- import { readFileSync as readFileSync88 } from "fs";
737189
+ import { readFileSync as readFileSync89 } from "fs";
737113
737190
  import { resolve as resolve73 } from "path";
737114
737191
  function logManagedSettings() {
737115
737192
  try {
@@ -737265,7 +737342,7 @@ function loadSettingsFromFlag(settingsFile) {
737265
737342
  resolvedPath: resolvedSettingsPath
737266
737343
  } = safeResolvePath(getFsImplementation(), settingsFile);
737267
737344
  try {
737268
- readFileSync88(resolvedSettingsPath, "utf8");
737345
+ readFileSync89(resolvedSettingsPath, "utf8");
737269
737346
  } catch (e) {
737270
737347
  if (isENOENT(e)) {
737271
737348
  process.stderr.write(source_default.red(`Error: Settings file not found: ${resolvedSettingsPath}
@@ -737684,7 +737761,7 @@ ${getTmuxInstallInstructions2()}
737684
737761
  }
737685
737762
  try {
737686
737763
  const filePath = resolve73(options4.systemPromptFile);
737687
- systemPrompt = readFileSync88(filePath, "utf8");
737764
+ systemPrompt = readFileSync89(filePath, "utf8");
737688
737765
  } catch (error40) {
737689
737766
  const code = getErrnoCode(error40);
737690
737767
  if (code === "ENOENT") {
@@ -737706,7 +737783,7 @@ ${getTmuxInstallInstructions2()}
737706
737783
  }
737707
737784
  try {
737708
737785
  const filePath = resolve73(options4.appendSystemPromptFile);
737709
- appendSystemPrompt = readFileSync88(filePath, "utf8");
737786
+ appendSystemPrompt = readFileSync89(filePath, "utf8");
737710
737787
  } catch (error40) {
737711
737788
  const code = getErrnoCode(error40);
737712
737789
  if (code === "ENOENT") {
@@ -738398,7 +738475,7 @@ ${customInstructions}` : customInstructions;
738398
738475
  }
738399
738476
  }
738400
738477
  logForDiagnosticsNoPII("info", "started", {
738401
- version: "1.57.0",
738478
+ version: "1.57.2",
738402
738479
  is_native_binary: isInBundledMode()
738403
738480
  });
738404
738481
  registerCleanup(async () => {
@@ -739184,7 +739261,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
739184
739261
  pendingHookMessages
739185
739262
  }, renderAndRun);
739186
739263
  }
739187
- }).version("1.57.0 (UR-Nexus)", "-v, --version", "Output the version number");
739264
+ }).version("1.57.2 (UR-Nexus)", "-v, --version", "Output the version number");
739188
739265
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
739189
739266
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
739190
739267
  if (canUserConfigureAdvisor()) {
@@ -740219,7 +740296,7 @@ if (false) {}
740219
740296
  async function main2() {
740220
740297
  const args = process.argv.slice(2);
740221
740298
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
740222
- console.log(`${"1.57.0"} (UR-Nexus)`);
740299
+ console.log(`${"1.57.2"} (UR-Nexus)`);
740223
740300
  return;
740224
740301
  }
740225
740302
  if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {