ur-agent 1.66.1 → 1.67.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,45 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.67.0
4
+
5
+ - Two subsystems loaded behind feature flags were not merely disabled, they
6
+ were broken in a way that only showed if you enabled them.
7
+ `services/compact/reactiveCompact.ts` did not exist on disk at all, yet
8
+ `query.ts` requires it by path and `/compact` calls two functions on it;
9
+ `services/contextCollapse/index.ts` was a stub exporting four names while
10
+ `query.ts` called four different ones, three of which were absent. Setting
11
+ either flag would have failed on the first turn with MODULE_NOT_FOUND or
12
+ "is not a function" rather than degrading to "feature off". Both modules now
13
+ export the full surface their callers use, returning result-shaped objects
14
+ instead of null so property access on the result cannot throw.
15
+ - Neither was reachable in shipped builds — the bundler passes only VOICE_MODE
16
+ and CHICAGO_MCP, and live context management runs through
17
+ `services/compact/autoCompact.ts`, which is real and unaffected.
18
+ - Added `test/optionalSubsystems.test.ts`, which derives the required exports
19
+ from what `query.ts` actually calls rather than from a hand-written list, so
20
+ a new call site cannot reintroduce the gap. It also asserts autoCompact has
21
+ not itself become a stub.
22
+ - Audit note: 223 files carry `@ts-nocheck` and are invisible to
23
+ `tsc --noEmit`. Stripping the suppressions in a scratch copy surfaces 872
24
+ errors across ~108k lines, including `query.ts`, `permissions.ts` and
25
+ `filesystem.ts`. Both defects above sat inside that blind spot.
26
+
27
+
28
+ ## 1.66.2
29
+
30
+ - A long session on Ollama now says when it has run out of context instead of
31
+ quietly getting worse. Ollama truncates an oversized prompt from the front
32
+ rather than returning an error, and the front of the prompt is the system
33
+ prompt — so the first thing discarded is the instruction set. The model then
34
+ answers with no tool guidance and no task-list requirement, which from the
35
+ outside looks like the model degrading on long prompts rather than like
36
+ context running out. Both numbers needed to detect this were already computed
37
+ on every request; they were never compared. A near-full context now warns at
38
+ 85% and a full one explains what was dropped and offers `/compact`, a fresh
39
+ session, a larger-context model, or `UR_OLLAMA_NUM_CTX`.
40
+ - Added `test/contextPressure.test.ts`, including that unknown sizing produces
41
+ no warning — an unmeasured context is not a full one.
42
+
3
43
  ## 1.66.1
4
44
 
5
45
  - Corrected the warning-state result used by reactive compaction and context
package/dist/cli.js CHANGED
@@ -56666,6 +56666,29 @@ function computeOllamaNumCtx(input) {
56666
56666
  const desired = Math.max(minCtx, estimatedPromptTokens + headroom);
56667
56667
  return cap(bucketize(desired));
56668
56668
  }
56669
+ function describeContextPressure(input) {
56670
+ const { estimatedPromptTokens, numCtx, modelContextLength, model } = input;
56671
+ const effective = numCtx ?? modelContextLength;
56672
+ if (!effective || effective <= 0 || estimatedPromptTokens <= 0) {
56673
+ return { level: "ok" };
56674
+ }
56675
+ if (estimatedPromptTokens >= effective) {
56676
+ return {
56677
+ level: "overflow",
56678
+ message: `This request is about ${fmt(estimatedPromptTokens)} tokens but ${model} ` + `is running with a ${fmt(effective)}-token context. Ollama discards the ` + `oldest tokens instead of failing, so the system prompt and earliest ` + `turns are being dropped and the model is answering without them. ` + `Use /compact, start a new session, pick a model with a larger context, ` + `or raise UR_OLLAMA_NUM_CTX if the model supports more.`
56679
+ };
56680
+ }
56681
+ if (estimatedPromptTokens >= effective * 0.85) {
56682
+ return {
56683
+ level: "tight",
56684
+ message: `This request is using about ${fmt(estimatedPromptTokens)} of ${model}'s ` + `${fmt(effective)}-token context. Once it is full, Ollama drops the ` + `oldest tokens \u2014 the system prompt first. /compact will free room.`
56685
+ };
56686
+ }
56687
+ return { level: "ok" };
56688
+ }
56689
+ function fmt(n2) {
56690
+ return n2 >= 1000 ? `${Math.round(n2 / 1000)}k` : String(n2);
56691
+ }
56669
56692
  function bucketize(n2) {
56670
56693
  for (const bucket of NUM_CTX_BUCKETS) {
56671
56694
  if (bucket >= n2)
@@ -57709,15 +57732,26 @@ function toOllamaChatRequest(params, stream4, capabilities, baseUrl = getEffecti
57709
57732
  if (typeof params.max_tokens === "number") {
57710
57733
  options.num_predict = params.max_tokens;
57711
57734
  }
57735
+ const modelContextLength = getOllamaContextLengthForModel(params.model, baseUrl);
57736
+ const estimatedPromptTokens = estimateInputTokens(params);
57712
57737
  const numCtx = computeOllamaNumCtx({
57713
- modelContextLength: getOllamaContextLengthForModel(params.model, baseUrl),
57714
- estimatedPromptTokens: estimateInputTokens(params),
57738
+ modelContextLength,
57739
+ estimatedPromptTokens,
57715
57740
  maxTokens: typeof params.max_tokens === "number" ? params.max_tokens : undefined,
57716
57741
  override: getOllamaNumCtxOverride()
57717
57742
  });
57718
57743
  if (numCtx !== undefined) {
57719
57744
  options.num_ctx = numCtx;
57720
57745
  }
57746
+ const pressure = describeContextPressure({
57747
+ estimatedPromptTokens,
57748
+ numCtx,
57749
+ modelContextLength,
57750
+ model: params.model
57751
+ });
57752
+ if (pressure.message && !pendingProviderNotice) {
57753
+ pendingProviderNotice = pressure.message;
57754
+ }
57721
57755
  if (Object.keys(options).length > 0) {
57722
57756
  request.options = options;
57723
57757
  }
@@ -75613,7 +75647,7 @@ var init_auth = __esm(() => {
75613
75647
 
75614
75648
  // src/utils/userAgent.ts
75615
75649
  function getURCodeUserAgent() {
75616
- return `ur/${"1.66.1"}`;
75650
+ return `ur/${"1.67.0"}`;
75617
75651
  }
75618
75652
 
75619
75653
  // src/utils/workloadContext.ts
@@ -75635,7 +75669,7 @@ function getUserAgent() {
75635
75669
  const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
75636
75670
  const workload = getWorkload();
75637
75671
  const workloadSuffix = workload ? `, workload/${workload}` : "";
75638
- return `ur-cli/${"1.66.1"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
75672
+ return `ur-cli/${"1.67.0"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
75639
75673
  }
75640
75674
  function getMCPUserAgent() {
75641
75675
  const parts = [];
@@ -75649,7 +75683,7 @@ function getMCPUserAgent() {
75649
75683
  parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
75650
75684
  }
75651
75685
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
75652
- return `ur/${"1.66.1"}${suffix}`;
75686
+ return `ur/${"1.67.0"}${suffix}`;
75653
75687
  }
75654
75688
  function getWebFetchUserAgent() {
75655
75689
  return `UR-User (${getURCodeUserAgent()})`;
@@ -75787,7 +75821,7 @@ var init_user = __esm(() => {
75787
75821
  deviceId,
75788
75822
  sessionId: getSessionId(),
75789
75823
  email: getEmail(),
75790
- appVersion: "1.66.1",
75824
+ appVersion: "1.67.0",
75791
75825
  platform: getHostPlatformForAnalytics(),
75792
75826
  organizationUuid,
75793
75827
  accountUuid,
@@ -83987,7 +84021,7 @@ var init_metadata = __esm(() => {
83987
84021
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
83988
84022
  WHITESPACE_REGEX = /\s+/;
83989
84023
  getVersionBase = memoize_default(() => {
83990
- const match = "1.66.1".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
84024
+ const match = "1.67.0".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
83991
84025
  return match ? match[0] : undefined;
83992
84026
  });
83993
84027
  buildEnvContext = memoize_default(async () => {
@@ -84027,7 +84061,7 @@ var init_metadata = __esm(() => {
84027
84061
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
84028
84062
  isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
84029
84063
  isURAiAuth: isURAISubscriber(),
84030
- version: "1.66.1",
84064
+ version: "1.67.0",
84031
84065
  versionBase: getVersionBase(),
84032
84066
  buildTime: "",
84033
84067
  deploymentEnvironment: env2.detectDeploymentEnvironment(),
@@ -84697,7 +84731,7 @@ function initialize1PEventLogging() {
84697
84731
  const platform2 = getPlatform();
84698
84732
  const attributes = {
84699
84733
  [import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
84700
- [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.66.1"
84734
+ [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.67.0"
84701
84735
  };
84702
84736
  if (platform2 === "wsl") {
84703
84737
  const wslVersion = getWslVersion();
@@ -84725,7 +84759,7 @@ function initialize1PEventLogging() {
84725
84759
  })
84726
84760
  ]
84727
84761
  });
84728
- firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.66.1");
84762
+ firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.67.0");
84729
84763
  }
84730
84764
  async function reinitialize1PEventLoggingIfConfigChanged() {
84731
84765
  if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
@@ -90099,7 +90133,7 @@ function suggestSkillCandidates(stats, existingSkillNames = [], options = {}) {
90099
90133
  function formatStats(stats, json2) {
90100
90134
  if (json2)
90101
90135
  return JSON.stringify(stats, null, 2);
90102
- const fmt = (t) => {
90136
+ const fmt2 = (t) => {
90103
90137
  const total = t.pass + t.fail;
90104
90138
  return `${t.pass}/${total} (${total ? Math.round(t.pass / total * 100) : 0}%)`;
90105
90139
  };
@@ -90108,14 +90142,14 @@ function formatStats(stats, json2) {
90108
90142
  if (cats.length) {
90109
90143
  lines.push("By category:");
90110
90144
  for (const [cat, t] of cats)
90111
- lines.push(` ${cat.padEnd(14)} ${fmt(t)}`);
90145
+ lines.push(` ${cat.padEnd(14)} ${fmt2(t)}`);
90112
90146
  lines.push("");
90113
90147
  }
90114
90148
  const models = Object.entries(stats.models).sort((a2, b) => a2[0].localeCompare(b[0]));
90115
90149
  if (models.length) {
90116
90150
  lines.push("By model:");
90117
90151
  for (const [model, t] of models)
90118
- lines.push(` ${model.padEnd(28)} ${fmt(t)}`);
90152
+ lines.push(` ${model.padEnd(28)} ${fmt2(t)}`);
90119
90153
  lines.push("");
90120
90154
  }
90121
90155
  if (stats.lessons.length) {
@@ -94613,7 +94647,7 @@ function formatAgentTrendReport(report = buildAgentTrendReport()) {
94613
94647
  function formatA2AAgentCard(options = {}, pretty = true) {
94614
94648
  return JSON.stringify(buildA2AAgentCard(options), null, pretty ? 2 : 0);
94615
94649
  }
94616
- var urVersion = "1.66.1", researchSnapshotDate = "2026-07-15", coverage, priorityRoadmap;
94650
+ var urVersion = "1.67.0", researchSnapshotDate = "2026-07-15", coverage, priorityRoadmap;
94617
94651
  var init_trends = __esm(() => {
94618
94652
  init_a2aCardSignature();
94619
94653
  coverage = [
@@ -97416,7 +97450,7 @@ function getAttributionHeader(fingerprint) {
97416
97450
  if (!isAttributionHeaderEnabled()) {
97417
97451
  return "";
97418
97452
  }
97419
- const version2 = `${"1.66.1"}.${fingerprint}`;
97453
+ const version2 = `${"1.67.0"}.${fingerprint}`;
97420
97454
  const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
97421
97455
  const cch = "";
97422
97456
  const workload = getWorkload();
@@ -155289,7 +155323,7 @@ var init_projectSafety = __esm(() => {
155289
155323
  function getInstruments() {
155290
155324
  if (instruments)
155291
155325
  return instruments;
155292
- const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.66.1");
155326
+ const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.67.0");
155293
155327
  instruments = {
155294
155328
  operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
155295
155329
  description: "GenAI operation duration.",
@@ -155387,7 +155421,7 @@ function genAiAgentAttributes() {
155387
155421
  "gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
155388
155422
  "gen_ai.provider.name": "ur",
155389
155423
  "gen_ai.agent.name": "UR-Nexus",
155390
- "gen_ai.agent.version": "1.66.1"
155424
+ "gen_ai.agent.version": "1.67.0"
155391
155425
  };
155392
155426
  }
155393
155427
  function genAiWorkflowAttributes(workflowName) {
@@ -155403,7 +155437,7 @@ function genAiWorkflowAttributes(workflowName) {
155403
155437
  function startGenAiWorkflowSpan(workflowName) {
155404
155438
  const attributes = genAiWorkflowAttributes(workflowName);
155405
155439
  const name = typeof attributes["gen_ai.workflow.name"] === "string" ? `invoke_workflow ${attributes["gen_ai.workflow.name"]}` : GEN_AI_OPERATION_INVOKE_WORKFLOW;
155406
- return import_api10.trace.getTracer("ur-agent.gen_ai", "1.66.1").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
155440
+ return import_api10.trace.getTracer("ur-agent.gen_ai", "1.67.0").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
155407
155441
  }
155408
155442
  function endGenAiWorkflowSpan(span, options2 = {}) {
155409
155443
  try {
@@ -155441,7 +155475,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
155441
155475
  if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
155442
155476
  attributes["gen_ai.memory.record.count"] = options2.recordCount;
155443
155477
  }
155444
- return import_api10.trace.getTracer("ur-agent.gen_ai", "1.66.1").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
155478
+ return import_api10.trace.getTracer("ur-agent.gen_ai", "1.67.0").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
155445
155479
  }
155446
155480
  function endGenAiMemorySpan(span, options2 = {}) {
155447
155481
  try {
@@ -248924,7 +248958,7 @@ function getTelemetryAttributes() {
248924
248958
  attributes["session.id"] = sessionId;
248925
248959
  }
248926
248960
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
248927
- attributes["app.version"] = "1.66.1";
248961
+ attributes["app.version"] = "1.67.0";
248928
248962
  }
248929
248963
  const oauthAccount = getOauthAccountInfo();
248930
248964
  if (oauthAccount) {
@@ -264542,11 +264576,11 @@ var require_format = __commonJS((exports) => {
264542
264576
  }
264543
264577
  function getFormat(fmtDef) {
264544
264578
  const code = fmtDef instanceof RegExp ? (0, codegen_1.regexpCode)(fmtDef) : opts.code.formats ? (0, codegen_1._)`${opts.code.formats}${(0, codegen_1.getProperty)(schema)}` : undefined;
264545
- const fmt = gen.scopeValue("formats", { key: schema, ref: fmtDef, code });
264579
+ const fmt2 = gen.scopeValue("formats", { key: schema, ref: fmtDef, code });
264546
264580
  if (typeof fmtDef == "object" && !(fmtDef instanceof RegExp)) {
264547
- return [fmtDef.type || "string", fmtDef.validate, (0, codegen_1._)`${fmt}.validate`];
264581
+ return [fmtDef.type || "string", fmtDef.validate, (0, codegen_1._)`${fmt2}.validate`];
264548
264582
  }
264549
- return ["string", fmtDef, fmt];
264583
+ return ["string", fmtDef, fmt2];
264550
264584
  }
264551
264585
  function validCondition() {
264552
264586
  if (typeof formatDef == "object" && !(formatDef instanceof RegExp) && formatDef.async) {
@@ -275651,11 +275685,11 @@ var require_format3 = __commonJS((exports) => {
275651
275685
  }
275652
275686
  function getFormat(fmtDef) {
275653
275687
  const code = fmtDef instanceof RegExp ? (0, codegen_1.regexpCode)(fmtDef) : opts.code.formats ? (0, codegen_1._)`${opts.code.formats}${(0, codegen_1.getProperty)(schema)}` : undefined;
275654
- const fmt = gen.scopeValue("formats", { key: schema, ref: fmtDef, code });
275688
+ const fmt2 = gen.scopeValue("formats", { key: schema, ref: fmtDef, code });
275655
275689
  if (typeof fmtDef == "object" && !(fmtDef instanceof RegExp)) {
275656
- return [fmtDef.type || "string", fmtDef.validate, (0, codegen_1._)`${fmt}.validate`];
275690
+ return [fmtDef.type || "string", fmtDef.validate, (0, codegen_1._)`${fmt2}.validate`];
275657
275691
  }
275658
- return ["string", fmtDef, fmt];
275692
+ return ["string", fmtDef, fmt2];
275659
275693
  }
275660
275694
  function validCondition() {
275661
275695
  if (typeof formatDef == "object" && !(formatDef instanceof RegExp) && formatDef.async) {
@@ -281210,11 +281244,11 @@ var require_format5 = __commonJS((exports) => {
281210
281244
  }
281211
281245
  function getFormat(fmtDef) {
281212
281246
  const code = fmtDef instanceof RegExp ? (0, codegen_1.regexpCode)(fmtDef) : opts.code.formats ? (0, codegen_1._)`${opts.code.formats}${(0, codegen_1.getProperty)(schema)}` : undefined;
281213
- const fmt = gen.scopeValue("formats", { key: schema, ref: fmtDef, code });
281247
+ const fmt2 = gen.scopeValue("formats", { key: schema, ref: fmtDef, code });
281214
281248
  if (typeof fmtDef == "object" && !(fmtDef instanceof RegExp)) {
281215
- return [fmtDef.type || "string", fmtDef.validate, (0, codegen_1._)`${fmt}.validate`];
281249
+ return [fmtDef.type || "string", fmtDef.validate, (0, codegen_1._)`${fmt2}.validate`];
281216
281250
  }
281217
- return ["string", fmtDef, fmt];
281251
+ return ["string", fmtDef, fmt2];
281218
281252
  }
281219
281253
  function validCondition() {
281220
281254
  if (typeof formatDef == "object" && !(formatDef instanceof RegExp) && formatDef.async) {
@@ -281651,8 +281685,8 @@ var require_limit = __commonJS((exports) => {
281651
281685
  ref: self2.formats,
281652
281686
  code: opts.code.formats
281653
281687
  });
281654
- const fmt = gen.const("fmt", (0, codegen_1._)`${fmts}[${fCxt.schemaCode}]`);
281655
- cxt.fail$data((0, codegen_1.or)((0, codegen_1._)`typeof ${fmt} != "object"`, (0, codegen_1._)`${fmt} instanceof RegExp`, (0, codegen_1._)`typeof ${fmt}.compare != "function"`, compareCode(fmt)));
281688
+ const fmt2 = gen.const("fmt", (0, codegen_1._)`${fmts}[${fCxt.schemaCode}]`);
281689
+ cxt.fail$data((0, codegen_1.or)((0, codegen_1._)`typeof ${fmt2} != "object"`, (0, codegen_1._)`${fmt2} instanceof RegExp`, (0, codegen_1._)`typeof ${fmt2}.compare != "function"`, compareCode(fmt2)));
281656
281690
  }
281657
281691
  function validateFormat() {
281658
281692
  const format4 = fCxt.schema;
@@ -281662,15 +281696,15 @@ var require_limit = __commonJS((exports) => {
281662
281696
  if (typeof fmtDef != "object" || fmtDef instanceof RegExp || typeof fmtDef.compare != "function") {
281663
281697
  throw new Error(`"${keyword}": format "${format4}" does not define "compare" function`);
281664
281698
  }
281665
- const fmt = gen.scopeValue("formats", {
281699
+ const fmt2 = gen.scopeValue("formats", {
281666
281700
  key: format4,
281667
281701
  ref: fmtDef,
281668
281702
  code: opts.code.formats ? (0, codegen_1._)`${opts.code.formats}${(0, codegen_1.getProperty)(format4)}` : undefined
281669
281703
  });
281670
- cxt.fail$data(compareCode(fmt));
281704
+ cxt.fail$data(compareCode(fmt2));
281671
281705
  }
281672
- function compareCode(fmt) {
281673
- return (0, codegen_1._)`${fmt}.compare(${data}, ${schemaCode}) ${KWDs[keyword].fail} 0`;
281706
+ function compareCode(fmt2) {
281707
+ return (0, codegen_1._)`${fmt2}.compare(${data}, ${schemaCode}) ${KWDs[keyword].fail} 0`;
281674
281708
  }
281675
281709
  },
281676
281710
  dependencies: ["format"]
@@ -295404,7 +295438,7 @@ function getInstallationEnv() {
295404
295438
  return;
295405
295439
  }
295406
295440
  function getURCodeVersion() {
295407
- return "1.66.1";
295441
+ return "1.67.0";
295408
295442
  }
295409
295443
  async function getInstalledVSCodeExtensionVersion(command) {
295410
295444
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -302735,7 +302769,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
302735
302769
  const client2 = new Client({
302736
302770
  name: "ur",
302737
302771
  title: "UR",
302738
- version: "1.66.1",
302772
+ version: "1.67.0",
302739
302773
  description: "UR-Nexus autonomous engineering workflow engine",
302740
302774
  websiteUrl: PRODUCT_URL
302741
302775
  }, {
@@ -303095,7 +303129,7 @@ var init_client5 = __esm(() => {
303095
303129
  const client2 = new Client({
303096
303130
  name: "ur",
303097
303131
  title: "UR",
303098
- version: "1.66.1",
303132
+ version: "1.67.0",
303099
303133
  description: "UR-Nexus autonomous engineering workflow engine",
303100
303134
  websiteUrl: PRODUCT_URL
303101
303135
  }, {
@@ -315634,7 +315668,7 @@ async function createRuntime() {
315634
315668
  bootstrapTelemetry();
315635
315669
  const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
315636
315670
  [import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur-agent",
315637
- [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.66.1"
315671
+ [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.67.0"
315638
315672
  }));
315639
315673
  const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
315640
315674
  resource,
@@ -315667,11 +315701,11 @@ async function createRuntime() {
315667
315701
  setMeterProvider(meterProvider);
315668
315702
  setLoggerProvider(loggerProvider);
315669
315703
  if (meterProvider) {
315670
- const meter = meterProvider.getMeter("ur-agent", "1.66.1");
315704
+ const meter = meterProvider.getMeter("ur-agent", "1.67.0");
315671
315705
  setMeter(meter, (name, options2) => meter.createCounter(name, options2));
315672
315706
  }
315673
315707
  if (loggerProvider) {
315674
- setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.66.1"));
315708
+ setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.67.0"));
315675
315709
  }
315676
315710
  if (!cleanupRegistered2) {
315677
315711
  cleanupRegistered2 = true;
@@ -316333,9 +316367,9 @@ async function assertMinVersion() {
316333
316367
  if (false) {}
316334
316368
  try {
316335
316369
  const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
316336
- if (versionConfig.minVersion && lt("1.66.1", versionConfig.minVersion)) {
316370
+ if (versionConfig.minVersion && lt("1.67.0", versionConfig.minVersion)) {
316337
316371
  console.error(`
316338
- It looks like your version of UR (${"1.66.1"}) needs an update.
316372
+ It looks like your version of UR (${"1.67.0"}) needs an update.
316339
316373
  A newer version (${versionConfig.minVersion} or higher) is required to continue.
316340
316374
 
316341
316375
  To update, please run:
@@ -316551,7 +316585,7 @@ async function installGlobalPackage(specificVersion) {
316551
316585
  logError2(new AutoUpdaterError("Another process is currently installing an update"));
316552
316586
  logEvent("tengu_auto_updater_lock_contention", {
316553
316587
  pid: process.pid,
316554
- currentVersion: "1.66.1"
316588
+ currentVersion: "1.67.0"
316555
316589
  });
316556
316590
  return "in_progress";
316557
316591
  }
@@ -316560,7 +316594,7 @@ async function installGlobalPackage(specificVersion) {
316560
316594
  if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
316561
316595
  logError2(new Error("Windows NPM detected in WSL environment"));
316562
316596
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
316563
- currentVersion: "1.66.1"
316597
+ currentVersion: "1.67.0"
316564
316598
  });
316565
316599
  console.error(`
316566
316600
  Error: Windows NPM detected in WSL
@@ -317095,7 +317129,7 @@ function detectLinuxGlobPatternWarnings() {
317095
317129
  }
317096
317130
  async function getDoctorDiagnostic() {
317097
317131
  const installationType = await getCurrentInstallationType();
317098
- const version2 = typeof MACRO !== "undefined" ? "1.66.1" : "unknown";
317132
+ const version2 = typeof MACRO !== "undefined" ? "1.67.0" : "unknown";
317099
317133
  const installationPath = await getInstallationPath();
317100
317134
  const invokedBinary = getInvokedBinary();
317101
317135
  const multipleInstallations = await detectMultipleInstallations();
@@ -318030,8 +318064,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
318030
318064
  const maxVersion = await getMaxVersion();
318031
318065
  if (maxVersion && gt(version2, maxVersion)) {
318032
318066
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
318033
- if (gte("1.66.1", maxVersion)) {
318034
- logForDebugging(`Native installer: current version ${"1.66.1"} is already at or above maxVersion ${maxVersion}, skipping update`);
318067
+ if (gte("1.67.0", maxVersion)) {
318068
+ logForDebugging(`Native installer: current version ${"1.67.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
318035
318069
  logEvent("tengu_native_update_skipped_max_version", {
318036
318070
  latency_ms: Date.now() - startTime,
318037
318071
  max_version: maxVersion,
@@ -318042,7 +318076,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
318042
318076
  version2 = maxVersion;
318043
318077
  }
318044
318078
  }
318045
- if (!forceReinstall && version2 === "1.66.1" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
318079
+ if (!forceReinstall && version2 === "1.67.0" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
318046
318080
  logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
318047
318081
  logEvent("tengu_native_update_complete", {
318048
318082
  latency_ms: Date.now() - startTime,
@@ -388136,7 +388170,7 @@ function isAnyTracingEnabled() {
388136
388170
  return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
388137
388171
  }
388138
388172
  function getTracer() {
388139
- return import_api39.trace.getTracer("ur-agent.gen_ai", "1.66.1");
388173
+ return import_api39.trace.getTracer("ur-agent.gen_ai", "1.67.0");
388140
388174
  }
388141
388175
  function createSpanAttributes(spanType, customAttributes = {}) {
388142
388176
  const baseAttributes = getTelemetryAttributes();
@@ -419380,7 +419414,7 @@ function Feedback({
419380
419414
  platform: env2.platform,
419381
419415
  gitRepo: envInfo.isGit,
419382
419416
  terminal: env2.terminal,
419383
- version: "1.66.1",
419417
+ version: "1.67.0",
419384
419418
  transcript: normalizeMessagesForAPI(messages),
419385
419419
  errors: sanitizedErrors,
419386
419420
  lastApiRequest: getLastAPIRequest(),
@@ -419572,7 +419606,7 @@ function Feedback({
419572
419606
  ", ",
419573
419607
  env2.terminal,
419574
419608
  ", v",
419575
- "1.66.1"
419609
+ "1.67.0"
419576
419610
  ]
419577
419611
  }, undefined, true, undefined, this)
419578
419612
  ]
@@ -419678,7 +419712,7 @@ ${sanitizedDescription}
419678
419712
  ` + `**Environment Info**
419679
419713
  ` + `- Platform: ${env2.platform}
419680
419714
  ` + `- Terminal: ${env2.terminal}
419681
- ` + `- Version: ${"1.66.1"}
419715
+ ` + `- Version: ${"1.67.0"}
419682
419716
  ` + `- Feedback ID: ${feedbackId}
419683
419717
  ` + `
419684
419718
  **Errors**
@@ -422788,7 +422822,7 @@ function buildPrimarySection() {
422788
422822
  }, undefined, false, undefined, this);
422789
422823
  return [{
422790
422824
  label: "Version",
422791
- value: "1.66.1"
422825
+ value: "1.67.0"
422792
422826
  }, {
422793
422827
  label: "Session name",
422794
422828
  value: nameValue
@@ -426118,7 +426152,7 @@ function Config({
426118
426152
  }
426119
426153
  }, undefined, false, undefined, this)
426120
426154
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime179.jsxDEV(ChannelDowngradeDialog, {
426121
- currentVersion: "1.66.1",
426155
+ currentVersion: "1.67.0",
426122
426156
  onChoice: (choice) => {
426123
426157
  setShowSubmenu(null);
426124
426158
  setTabsHidden(false);
@@ -426130,7 +426164,7 @@ function Config({
426130
426164
  autoUpdatesChannel: "stable"
426131
426165
  };
426132
426166
  if (choice === "stay") {
426133
- newSettings.minimumVersion = "1.66.1";
426167
+ newSettings.minimumVersion = "1.67.0";
426134
426168
  }
426135
426169
  updateSettingsForSource("userSettings", newSettings);
426136
426170
  setSettingsData((prev_27) => ({
@@ -434204,7 +434238,7 @@ function HelpV2(t0) {
434204
434238
  let t6;
434205
434239
  if ($2[31] !== tabs) {
434206
434240
  t6 = /* @__PURE__ */ jsx_dev_runtime206.jsxDEV(Tabs, {
434207
- title: `UR v${"1.66.1"}`,
434241
+ title: `UR v${"1.67.0"}`,
434208
434242
  color: "professionalBlue",
434209
434243
  defaultTab: "general",
434210
434244
  children: tabs
@@ -435137,7 +435171,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
435137
435171
  async function handleInitialize(options2) {
435138
435172
  return {
435139
435173
  name: "UR",
435140
- version: "1.66.1",
435174
+ version: "1.67.0",
435141
435175
  protocolVersion: "0.1.0",
435142
435176
  workspaceRoot: options2.cwd,
435143
435177
  capabilities: {
@@ -452245,7 +452279,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
452245
452279
  return [];
452246
452280
  }
452247
452281
  }
452248
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.66.1") {
452282
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.67.0") {
452249
452283
  if (process.env.USER_TYPE === "ant") {
452250
452284
  const changelog = "";
452251
452285
  if (changelog) {
@@ -452272,7 +452306,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.66.1")
452272
452306
  releaseNotes
452273
452307
  };
452274
452308
  }
452275
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.66.1") {
452309
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.67.0") {
452276
452310
  if (process.env.USER_TYPE === "ant") {
452277
452311
  const changelog = "";
452278
452312
  if (changelog) {
@@ -455138,7 +455172,7 @@ function getRecentActivitySync() {
455138
455172
  return cachedActivity;
455139
455173
  }
455140
455174
  function getLogoDisplayData() {
455141
- const version2 = process.env.DEMO_VERSION ?? "1.66.1";
455175
+ const version2 = process.env.DEMO_VERSION ?? "1.67.0";
455142
455176
  const serverUrl = getDirectConnectServerUrl();
455143
455177
  const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
455144
455178
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -456005,7 +456039,7 @@ function LogoV2() {
456005
456039
  if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
456006
456040
  t2 = () => {
456007
456041
  const currentConfig2 = getGlobalConfig();
456008
- if (currentConfig2.lastReleaseNotesSeen === "1.66.1") {
456042
+ if (currentConfig2.lastReleaseNotesSeen === "1.67.0") {
456009
456043
  return;
456010
456044
  }
456011
456045
  saveGlobalConfig(_temp325);
@@ -456690,12 +456724,12 @@ function LogoV2() {
456690
456724
  return t41;
456691
456725
  }
456692
456726
  function _temp325(current) {
456693
- if (current.lastReleaseNotesSeen === "1.66.1") {
456727
+ if (current.lastReleaseNotesSeen === "1.67.0") {
456694
456728
  return current;
456695
456729
  }
456696
456730
  return {
456697
456731
  ...current,
456698
- lastReleaseNotesSeen: "1.66.1"
456732
+ lastReleaseNotesSeen: "1.67.0"
456699
456733
  };
456700
456734
  }
456701
456735
  function _temp241(s_0) {
@@ -471707,8 +471741,8 @@ Run /security report for the full report.`;
471707
471741
  }
471708
471742
  case "report": {
471709
471743
  const all4 = findings.all();
471710
- const fmt = rest[0] ?? "markdown";
471711
- return fmt === "json" ? toJson(all4) : fmt === "sarif" ? toSarif(all4) : fmt === "csv" ? toCsv(all4) : toMarkdown(all4);
471744
+ const fmt2 = rest[0] ?? "markdown";
471745
+ return fmt2 === "json" ? toJson(all4) : fmt2 === "sarif" ? toSarif(all4) : fmt2 === "csv" ? toCsv(all4) : toMarkdown(all4);
471712
471746
  }
471713
471747
  case "findings": {
471714
471748
  const all4 = findings.all();
@@ -473641,7 +473675,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
473641
473675
  if (spec.name !== specName) {
473642
473676
  throw new Error("Agentic CI workflow spec name does not match");
473643
473677
  }
473644
- const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.66.1" : "1.66.1");
473678
+ const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.67.0" : "1.67.0");
473645
473679
  if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
473646
473680
  throw new Error("invalid ur-agent package version");
473647
473681
  }
@@ -474634,7 +474668,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
474634
474668
  path: ".github/workflows/ur.yml",
474635
474669
  root: "project",
474636
474670
  content: compileAgenticCiWorkflow("default", {
474637
- packageVersion: typeof MACRO !== "undefined" ? "1.66.1" : "1.66.1"
474671
+ packageVersion: typeof MACRO !== "undefined" ? "1.67.0" : "1.67.0"
474638
474672
  })
474639
474673
  },
474640
474674
  {
@@ -474704,7 +474738,7 @@ function value(tokens, flag) {
474704
474738
  return index2 >= 0 ? tokens[index2 + 1] : undefined;
474705
474739
  }
474706
474740
  function cliVersion() {
474707
- return typeof MACRO !== "undefined" ? "1.66.1" : "1.66.1";
474741
+ return typeof MACRO !== "undefined" ? "1.67.0" : "1.67.0";
474708
474742
  }
474709
474743
  function workflowPath(cwd2) {
474710
474744
  return join159(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
@@ -480569,7 +480603,7 @@ function createAcpStdioApp(deps) {
480569
480603
  }
480570
480604
  },
480571
480605
  authMethods: [],
480572
- agentInfo: { name: "UR-Nexus", version: "1.66.1" }
480606
+ agentInfo: { name: "UR-Nexus", version: "1.67.0" }
480573
480607
  })).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
480574
480608
  const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
480575
480609
  await runtime2.announce({
@@ -480666,7 +480700,7 @@ function createAcpStdioAgent(deps) {
480666
480700
  }
480667
480701
  },
480668
480702
  authMethods: [],
480669
- agentInfo: { name: "UR-Nexus", version: "1.66.1" }
480703
+ agentInfo: { name: "UR-Nexus", version: "1.67.0" }
480670
480704
  });
480671
480705
  return;
480672
480706
  case "authenticate":
@@ -691826,7 +691860,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
691826
691860
  smapsRollup,
691827
691861
  platform: process.platform,
691828
691862
  nodeVersion: process.version,
691829
- ccVersion: "1.66.1"
691863
+ ccVersion: "1.67.0"
691830
691864
  };
691831
691865
  }
691832
691866
  async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
@@ -692406,7 +692440,7 @@ var init_bridge_kick = __esm(() => {
692406
692440
  var call153 = async () => {
692407
692441
  return {
692408
692442
  type: "text",
692409
- value: "1.66.1"
692443
+ value: "1.67.0"
692410
692444
  };
692411
692445
  }, version2, version_default;
692412
692446
  var init_version = __esm(() => {
@@ -703586,7 +703620,7 @@ function generateHtmlReport(data, insights) {
703586
703620
  </html>`;
703587
703621
  }
703588
703622
  function buildExportData(data, insights, facets, remoteStats) {
703589
- const version3 = typeof MACRO !== "undefined" ? "1.66.1" : "unknown";
703623
+ const version3 = typeof MACRO !== "undefined" ? "1.67.0" : "unknown";
703590
703624
  const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
703591
703625
  const facets_summary = {
703592
703626
  total: facets.size,
@@ -707913,7 +707947,7 @@ var init_sessionStorage = __esm(() => {
707913
707947
  init_settings2();
707914
707948
  init_slowOperations();
707915
707949
  init_uuid();
707916
- VERSION7 = typeof MACRO !== "undefined" ? "1.66.1" : "unknown";
707950
+ VERSION7 = typeof MACRO !== "undefined" ? "1.67.0" : "unknown";
707917
707951
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
707918
707952
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
707919
707953
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -709128,7 +709162,7 @@ var init_filesystem = __esm(() => {
709128
709162
  });
709129
709163
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
709130
709164
  const nonce = randomBytes20(16).toString("hex");
709131
- return join230(getURTempDir(), "bundled-skills", "1.66.1", nonce);
709165
+ return join230(getURTempDir(), "bundled-skills", "1.67.0", nonce);
709132
709166
  });
709133
709167
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
709134
709168
  });
@@ -715434,7 +715468,7 @@ function computeFingerprint(messageText2, version3) {
715434
715468
  }
715435
715469
  function computeFingerprintFromMessages(messages) {
715436
715470
  const firstMessageText = extractFirstMessageText(messages);
715437
- return computeFingerprint(firstMessageText, "1.66.1");
715471
+ return computeFingerprint(firstMessageText, "1.67.0");
715438
715472
  }
715439
715473
  var FINGERPRINT_SALT = "59cf53e54c78";
715440
715474
  var init_fingerprint = () => {};
@@ -717333,7 +717367,7 @@ async function sideQuery(opts) {
717333
717367
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
717334
717368
  }
717335
717369
  const messageText2 = extractFirstUserMessageText(messages);
717336
- const fingerprint2 = computeFingerprint(messageText2, "1.66.1");
717370
+ const fingerprint2 = computeFingerprint(messageText2, "1.67.0");
717337
717371
  const attributionHeader = getAttributionHeader(fingerprint2);
717338
717372
  const systemBlocks = [
717339
717373
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -722120,7 +722154,7 @@ function buildSystemInitMessage(inputs) {
722120
722154
  slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
722121
722155
  apiKeySource: getURHQApiKeyWithSource().source,
722122
722156
  betas: getSdkBetas(),
722123
- ur_version: "1.66.1",
722157
+ ur_version: "1.67.0",
722124
722158
  output_style: outputStyle2,
722125
722159
  agents: inputs.agents.map((agent2) => agent2.agentType),
722126
722160
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
@@ -736071,7 +736105,7 @@ var init_useVoiceEnabled = __esm(() => {
736071
736105
  function getSemverPart(version3) {
736072
736106
  return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
736073
736107
  }
736074
- function useUpdateNotification(updatedVersion, initialVersion = "1.66.1") {
736108
+ function useUpdateNotification(updatedVersion, initialVersion = "1.67.0") {
736075
736109
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react222.useState(() => getSemverPart(initialVersion));
736076
736110
  if (!updatedVersion) {
736077
736111
  return null;
@@ -736120,7 +736154,7 @@ function AutoUpdater({
736120
736154
  return;
736121
736155
  }
736122
736156
  if (false) {}
736123
- const currentVersion = "1.66.1";
736157
+ const currentVersion = "1.67.0";
736124
736158
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
736125
736159
  let latestVersion = await getLatestVersion(channel);
736126
736160
  const isDisabled = isAutoUpdaterDisabled();
@@ -736349,12 +736383,12 @@ function NativeAutoUpdater({
736349
736383
  logEvent("tengu_native_auto_updater_start", {});
736350
736384
  try {
736351
736385
  const maxVersion = await getMaxVersion();
736352
- if (maxVersion && gt("1.66.1", maxVersion)) {
736386
+ if (maxVersion && gt("1.67.0", maxVersion)) {
736353
736387
  const msg = await getMaxVersionMessage();
736354
736388
  setMaxVersionIssue(msg ?? "affects your version");
736355
736389
  }
736356
736390
  const result = await installLatest(channel);
736357
- const currentVersion = "1.66.1";
736391
+ const currentVersion = "1.67.0";
736358
736392
  const latencyMs = Date.now() - startTime;
736359
736393
  if (result.lockFailed) {
736360
736394
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -736491,17 +736525,17 @@ function PackageManagerAutoUpdater(t0) {
736491
736525
  const maxVersion = await getMaxVersion();
736492
736526
  if (maxVersion && latest && gt(latest, maxVersion)) {
736493
736527
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
736494
- if (gte("1.66.1", maxVersion)) {
736495
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.66.1"} is already at or above maxVersion ${maxVersion}, skipping update`);
736528
+ if (gte("1.67.0", maxVersion)) {
736529
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.67.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
736496
736530
  setUpdateAvailable(false);
736497
736531
  return;
736498
736532
  }
736499
736533
  latest = maxVersion;
736500
736534
  }
736501
- const hasUpdate = latest && !gte("1.66.1", latest) && !shouldSkipVersion(latest);
736535
+ const hasUpdate = latest && !gte("1.67.0", latest) && !shouldSkipVersion(latest);
736502
736536
  setUpdateAvailable(!!hasUpdate);
736503
736537
  if (hasUpdate) {
736504
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.66.1"} -> ${latest}`);
736538
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.67.0"} -> ${latest}`);
736505
736539
  }
736506
736540
  };
736507
736541
  $2[0] = t1;
@@ -736535,7 +736569,7 @@ function PackageManagerAutoUpdater(t0) {
736535
736569
  wrap: "truncate",
736536
736570
  children: [
736537
736571
  "currentVersion: ",
736538
- "1.66.1"
736572
+ "1.67.0"
736539
736573
  ]
736540
736574
  }, undefined, true, undefined, this);
736541
736575
  $2[3] = verbose;
@@ -747228,7 +747262,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
747228
747262
  project_dir: getOriginalCwd(),
747229
747263
  added_dirs: addedDirs
747230
747264
  },
747231
- version: "1.66.1",
747265
+ version: "1.67.0",
747232
747266
  output_style: {
747233
747267
  name: outputStyleName
747234
747268
  },
@@ -747306,7 +747340,7 @@ function StatusLineInner({
747306
747340
  const taskValues = Object.values(tasks2);
747307
747341
  const taskRunningCount = countActiveBackgroundTasks(taskValues);
747308
747342
  const defaultStatusLineText = buildDefaultStatusBar({
747309
- version: "1.66.1",
747343
+ version: "1.67.0",
747310
747344
  providerLabel: providerRuntime.providerLabel,
747311
747345
  authMode: providerRuntime.authLabel,
747312
747346
  model: renderModelName(mainLoopModel) || providerRuntime.model || "",
@@ -759486,7 +759520,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
759486
759520
  } catch {}
759487
759521
  const data = {
759488
759522
  trigger: trigger2,
759489
- version: "1.66.1",
759523
+ version: "1.67.0",
759490
759524
  platform: process.platform,
759491
759525
  transcript,
759492
759526
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -771854,7 +771888,7 @@ function WelcomeV2() {
771854
771888
  dimColor: true,
771855
771889
  children: [
771856
771890
  "v",
771857
- "1.66.1"
771891
+ "1.67.0"
771858
771892
  ]
771859
771893
  }, undefined, true, undefined, this)
771860
771894
  ]
@@ -773114,7 +773148,7 @@ function completeOnboarding() {
773114
773148
  saveGlobalConfig((current) => ({
773115
773149
  ...current,
773116
773150
  hasCompletedOnboarding: true,
773117
- lastOnboardingVersion: "1.66.1"
773151
+ lastOnboardingVersion: "1.67.0"
773118
773152
  }));
773119
773153
  }
773120
773154
  function showDialog(root2, renderer) {
@@ -778158,7 +778192,7 @@ function appendToLog(path24, message) {
778158
778192
  cwd: getFsImplementation().cwd(),
778159
778193
  userType: process.env.USER_TYPE,
778160
778194
  sessionId: getSessionId(),
778161
- version: "1.66.1"
778195
+ version: "1.67.0"
778162
778196
  };
778163
778197
  getLogWriter(path24).write(messageWithTimestamp);
778164
778198
  }
@@ -782322,8 +782356,8 @@ async function getEnvLessBridgeConfig() {
782322
782356
  }
782323
782357
  async function checkEnvLessBridgeMinVersion() {
782324
782358
  const cfg = await getEnvLessBridgeConfig();
782325
- if (cfg.min_version && lt("1.66.1", cfg.min_version)) {
782326
- return `Your version of UR (${"1.66.1"}) is too old for Remote Control.
782359
+ if (cfg.min_version && lt("1.67.0", cfg.min_version)) {
782360
+ return `Your version of UR (${"1.67.0"}) is too old for Remote Control.
782327
782361
  Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
782328
782362
  }
782329
782363
  return null;
@@ -782797,7 +782831,7 @@ async function initBridgeCore(params) {
782797
782831
  const rawApi = createBridgeApiClient({
782798
782832
  baseUrl,
782799
782833
  getAccessToken,
782800
- runnerVersion: "1.66.1",
782834
+ runnerVersion: "1.67.0",
782801
782835
  onDebug: logForDebugging,
782802
782836
  onAuth401,
782803
782837
  getTrustedDeviceToken
@@ -792270,7 +792304,7 @@ function getAgUiCapabilities() {
792270
792304
  name: "UR-Nexus",
792271
792305
  type: "ur-nexus",
792272
792306
  description: "Provider-flexible, local-first autonomous engineering workflow agent.",
792273
- version: "1.66.1",
792307
+ version: "1.67.0",
792274
792308
  provider: "UR",
792275
792309
  documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
792276
792310
  },
@@ -793410,7 +793444,7 @@ function createMCPServer(cwd4, debug2, verbose) {
793410
793444
  };
793411
793445
  const server2 = new Server({
793412
793446
  name: "ur-nexus",
793413
- version: "1.66.1"
793447
+ version: "1.67.0"
793414
793448
  }, {
793415
793449
  capabilities: {
793416
793450
  tools: {}
@@ -794568,7 +794602,7 @@ function thrownResponse(error40) {
794568
794602
  }
794569
794603
  async function createUrMcp2026Runtime(options4) {
794570
794604
  const server2 = createMCPServer(options4.cwd, options4.debug === true, options4.verbose === true);
794571
- const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.66.1" }, { capabilities: {} });
794605
+ const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.67.0" }, { capabilities: {} });
794572
794606
  const [clientTransport, serverTransport] = createLinkedTransportPair();
794573
794607
  try {
794574
794608
  await server2.connect(serverTransport);
@@ -794579,7 +794613,7 @@ async function createUrMcp2026Runtime(options4) {
794579
794613
  }
794580
794614
  const runtime2 = new Mcp2026Runtime({
794581
794615
  cwd: options4.cwd,
794582
- version: "1.66.1",
794616
+ version: "1.67.0",
794583
794617
  backend: {
794584
794618
  listTools: async () => {
794585
794619
  const listed = await client2.listTools();
@@ -796712,7 +796746,7 @@ async function update() {
796712
796746
  logEvent("tengu_update_check", {});
796713
796747
  const diagnostic2 = await getDoctorDiagnostic();
796714
796748
  const result = await checkUpgradeStatus({
796715
- currentVersion: "1.66.1",
796749
+ currentVersion: "1.67.0",
796716
796750
  packageName: UR_AGENT_PACKAGE_NAME,
796717
796751
  installationType: diagnostic2.installationType,
796718
796752
  latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
@@ -798028,7 +798062,7 @@ ${customInstructions}` : customInstructions;
798028
798062
  }
798029
798063
  }
798030
798064
  logForDiagnosticsNoPII("info", "started", {
798031
- version: "1.66.1",
798065
+ version: "1.67.0",
798032
798066
  is_native_binary: isInBundledMode()
798033
798067
  });
798034
798068
  registerCleanup(async () => {
@@ -798814,7 +798848,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
798814
798848
  pendingHookMessages
798815
798849
  }, renderAndRun);
798816
798850
  }
798817
- }).version("1.66.1 (UR-Nexus)", "-v, --version", "Output the version number");
798851
+ }).version("1.67.0 (UR-Nexus)", "-v, --version", "Output the version number");
798818
798852
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
798819
798853
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
798820
798854
  if (canUserConfigureAdvisor()) {
@@ -799873,7 +799907,7 @@ if (false) {}
799873
799907
  async function main2() {
799874
799908
  const args = process.argv.slice(2);
799875
799909
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
799876
- console.log(`${"1.66.1"} (UR-Nexus)`);
799910
+ console.log(`${"1.67.0"} (UR-Nexus)`);
799877
799911
  return;
799878
799912
  }
799879
799913
  if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {
@@ -19,7 +19,7 @@ You need:
19
19
 
20
20
  ```sh
21
21
  ur --version
22
- # expected for this release: "1.66.1 (UR-Nexus)"
22
+ # expected for this release: "1.67.0 (UR-Nexus)"
23
23
  ```
24
24
 
25
25
  ## 0.1 First-workspace model selection (1.45.4)
@@ -45,7 +45,7 @@
45
45
  <main id="content" class="content">
46
46
  <header class="topbar">
47
47
  <div>
48
- <p class="eyebrow">Version 1.66.1</p>
48
+ <p class="eyebrow">Version 1.67.0</p>
49
49
  <h1>UR-Nexus Documentation</h1>
50
50
  <p class="lead">A practical, tutorial-style reference for installing, configuring, automating, extending, and operating UR-Nexus.</p>
51
51
  </div>
@@ -7,7 +7,7 @@ plugins {
7
7
  }
8
8
 
9
9
  group = "dev.urnexus"
10
- version = "1.66.1"
10
+ version = "1.67.0"
11
11
 
12
12
  repositories {
13
13
  mavenCentral()
@@ -2,7 +2,7 @@
2
2
  "name": "ur-inline-diffs",
3
3
  "displayName": "UR Inline Diffs",
4
4
  "description": "Review, apply, and reject UR inline diff bundles from .ur/ide/diffs inside VS Code.",
5
- "version": "1.66.1",
5
+ "version": "1.67.0",
6
6
  "publisher": "ur-nexus",
7
7
  "engines": {
8
8
  "vscode": "^1.92.0"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ur-agent",
3
- "version": "1.66.1",
3
+ "version": "1.67.0",
4
4
  "description": "UR-Nexus — autonomous engineering workflow engine (plan, execute, test, verify, document, benchmark, reproduce)",
5
5
  "type": "module",
6
6
  "packageManager": "bun@1.3.14",
@@ -1,6 +1,6 @@
1
1
  # UR-Nexus — Technical Specifications
2
2
 
3
- > Audited against the executable source and tests for `ur-agent` v1.66.1.
3
+ > Audited against the executable source and tests for `ur-agent` v1.67.0.
4
4
  > Command, tool, flag, provider, and setting claims are checked against the
5
5
  > implementation rather than copied from product prose. Release validation
6
6
  > keeps this version synchronized and packages the complete `technical/`