ur-agent 1.80.9 → 1.80.10

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,18 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.80.10
4
+
5
+ - Fixed the underlying cause of task-free research still returning
6
+ `TaskListRequired` in the published CLI: the public bundle compiled the
7
+ shipped `Explore` and `Plan` definitions out of the active agent registry.
8
+ Research classification was correct, but there was no protected worker to
9
+ receive the capability-reduced call.
10
+ - Made `Explore` and `Plan` deterministic core agents for public, local, API,
11
+ and subscription-CLI use, aligned the development and release feature sets,
12
+ and added tests against the real built-in registry plus the bundle script.
13
+ Anthropic-internal experimentation remains isolated to internal builds.
14
+ Write-capable delegation, task enforcement, and Approve All are unchanged.
15
+
3
16
  ## 1.80.9
4
17
 
5
18
  - Fixed the remaining provider-independent `TaskListRequired` failure for
package/dist/cli.js CHANGED
@@ -107788,7 +107788,7 @@ var init_auth = __esm(() => {
107788
107788
 
107789
107789
  // src/utils/userAgent.ts
107790
107790
  function getURCodeUserAgent() {
107791
- return `ur/${"1.80.9"}`;
107791
+ return `ur/${"1.80.10"}`;
107792
107792
  }
107793
107793
 
107794
107794
  // src/utils/workloadContext.ts
@@ -107810,7 +107810,7 @@ function getUserAgent() {
107810
107810
  const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
107811
107811
  const workload = getWorkload();
107812
107812
  const workloadSuffix = workload ? `, workload/${workload}` : "";
107813
- return `ur-cli/${"1.80.9"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
107813
+ return `ur-cli/${"1.80.10"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
107814
107814
  }
107815
107815
  function getMCPUserAgent() {
107816
107816
  const parts = [];
@@ -107824,7 +107824,7 @@ function getMCPUserAgent() {
107824
107824
  parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
107825
107825
  }
107826
107826
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
107827
- return `ur/${"1.80.9"}${suffix}`;
107827
+ return `ur/${"1.80.10"}${suffix}`;
107828
107828
  }
107829
107829
  function getWebFetchUserAgent() {
107830
107830
  return `UR-User (${getURCodeUserAgent()})`;
@@ -107962,7 +107962,7 @@ var init_user = __esm(() => {
107962
107962
  deviceId,
107963
107963
  sessionId: getSessionId(),
107964
107964
  email: getEmail(),
107965
- appVersion: "1.80.9",
107965
+ appVersion: "1.80.10",
107966
107966
  platform: getHostPlatformForAnalytics(),
107967
107967
  organizationUuid,
107968
107968
  accountUuid,
@@ -115849,7 +115849,7 @@ var init_metadata = __esm(() => {
115849
115849
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
115850
115850
  WHITESPACE_REGEX = /\s+/;
115851
115851
  getVersionBase = memoize_default(() => {
115852
- const match = "1.80.9".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
115852
+ const match = "1.80.10".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
115853
115853
  return match ? match[0] : undefined;
115854
115854
  });
115855
115855
  buildEnvContext = memoize_default(async () => {
@@ -115889,7 +115889,7 @@ var init_metadata = __esm(() => {
115889
115889
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
115890
115890
  isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
115891
115891
  isURAiAuth: isURAISubscriber(),
115892
- version: "1.80.9",
115892
+ version: "1.80.10",
115893
115893
  versionBase: getVersionBase(),
115894
115894
  buildTime: "",
115895
115895
  deploymentEnvironment: env2.detectDeploymentEnvironment(),
@@ -116559,7 +116559,7 @@ function initialize1PEventLogging() {
116559
116559
  const platform2 = getPlatform();
116560
116560
  const attributes = {
116561
116561
  [import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
116562
- [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.80.9"
116562
+ [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.80.10"
116563
116563
  };
116564
116564
  if (platform2 === "wsl") {
116565
116565
  const wslVersion = getWslVersion();
@@ -116587,7 +116587,7 @@ function initialize1PEventLogging() {
116587
116587
  })
116588
116588
  ]
116589
116589
  });
116590
- firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.80.9");
116590
+ firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.80.10");
116591
116591
  }
116592
116592
  async function reinitialize1PEventLoggingIfConfigChanged() {
116593
116593
  if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
@@ -126550,7 +126550,7 @@ function formatA2AAgentCard(options = {}, pretty = true) {
126550
126550
  function formatA2AV1AgentCard(options = {}, pretty = true) {
126551
126551
  return JSON.stringify(buildA2AV1AgentCard(options), null, pretty ? 2 : 0);
126552
126552
  }
126553
- var urVersion = "1.80.9", researchSnapshotDate = "2026-08-10", coverage, priorityRoadmap;
126553
+ var urVersion = "1.80.10", researchSnapshotDate = "2026-08-10", coverage, priorityRoadmap;
126554
126554
  var init_trends = __esm(() => {
126555
126555
  init_a2aCardSignature();
126556
126556
  coverage = [
@@ -129440,7 +129440,7 @@ function getAttributionHeader(fingerprint) {
129440
129440
  if (!isAttributionHeaderEnabled()) {
129441
129441
  return "";
129442
129442
  }
129443
- const version2 = `${"1.80.9"}.${fingerprint}`;
129443
+ const version2 = `${"1.80.10"}.${fingerprint}`;
129444
129444
  const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
129445
129445
  const cch = "";
129446
129446
  const workload = getWorkload();
@@ -174699,7 +174699,11 @@ Use the literal string \`VERDICT: \` followed by exactly one of \`PASS\`, \`FAIL
174699
174699
 
174700
174700
  // src/tools/AgentTool/builtInAgents.ts
174701
174701
  function areExplorePlanAgentsEnabled() {
174702
- if (false) {}
174702
+ if (process.env.USER_TYPE !== "ant")
174703
+ return true;
174704
+ if (true) {
174705
+ return getFeatureValue_CACHED_MAY_BE_STALE("tengu_amber_stoat", true);
174706
+ }
174703
174707
  return false;
174704
174708
  }
174705
174709
  function getBuiltInAgents() {
@@ -184636,7 +184640,7 @@ var init_projectSafety = __esm(() => {
184636
184640
  function getInstruments() {
184637
184641
  if (instruments)
184638
184642
  return instruments;
184639
- const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.80.9");
184643
+ const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.80.10");
184640
184644
  instruments = {
184641
184645
  operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
184642
184646
  description: "GenAI operation duration.",
@@ -184734,7 +184738,7 @@ function genAiAgentAttributes() {
184734
184738
  "gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
184735
184739
  "gen_ai.provider.name": "ur",
184736
184740
  "gen_ai.agent.name": "UR-Nexus",
184737
- "gen_ai.agent.version": "1.80.9"
184741
+ "gen_ai.agent.version": "1.80.10"
184738
184742
  };
184739
184743
  }
184740
184744
  function genAiWorkflowAttributes(workflowName, workflowRunId) {
@@ -184755,7 +184759,7 @@ function genAiWorkflowAttributes(workflowName, workflowRunId) {
184755
184759
  function startGenAiWorkflowSpan(workflowName, workflowRunId) {
184756
184760
  const attributes = genAiWorkflowAttributes(workflowName, workflowRunId);
184757
184761
  const name = typeof attributes["gen_ai.workflow.name"] === "string" ? `invoke_workflow ${attributes["gen_ai.workflow.name"]}` : GEN_AI_OPERATION_INVOKE_WORKFLOW;
184758
- return import_api10.trace.getTracer("ur-agent.gen_ai", "1.80.9").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
184762
+ return import_api10.trace.getTracer("ur-agent.gen_ai", "1.80.10").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
184759
184763
  }
184760
184764
  function endGenAiWorkflowSpan(span, options2 = {}) {
184761
184765
  try {
@@ -184793,7 +184797,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
184793
184797
  if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
184794
184798
  attributes["gen_ai.memory.record.count"] = options2.recordCount;
184795
184799
  }
184796
- return import_api10.trace.getTracer("ur-agent.gen_ai", "1.80.9").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
184800
+ return import_api10.trace.getTracer("ur-agent.gen_ai", "1.80.10").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
184797
184801
  }
184798
184802
  function endGenAiMemorySpan(span, options2 = {}) {
184799
184803
  try {
@@ -278508,7 +278512,7 @@ function getTelemetryAttributes() {
278508
278512
  attributes["session.id"] = sessionId;
278509
278513
  }
278510
278514
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
278511
- attributes["app.version"] = "1.80.9";
278515
+ attributes["app.version"] = "1.80.10";
278512
278516
  }
278513
278517
  const oauthAccount = getOauthAccountInfo();
278514
278518
  if (oauthAccount) {
@@ -319499,7 +319503,7 @@ function getInstallationEnv() {
319499
319503
  return;
319500
319504
  }
319501
319505
  function getURCodeVersion() {
319502
- return "1.80.9";
319506
+ return "1.80.10";
319503
319507
  }
319504
319508
  async function getInstalledVSCodeExtensionVersion(command) {
319505
319509
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -326869,7 +326873,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
326869
326873
  const client2 = new Client({
326870
326874
  name: "ur",
326871
326875
  title: "UR",
326872
- version: "1.80.9",
326876
+ version: "1.80.10",
326873
326877
  description: "UR-Nexus autonomous engineering workflow engine",
326874
326878
  websiteUrl: PRODUCT_URL
326875
326879
  }, {
@@ -327230,7 +327234,7 @@ var init_client5 = __esm(() => {
327230
327234
  const client2 = new Client({
327231
327235
  name: "ur",
327232
327236
  title: "UR",
327233
- version: "1.80.9",
327237
+ version: "1.80.10",
327234
327238
  description: "UR-Nexus autonomous engineering workflow engine",
327235
327239
  websiteUrl: PRODUCT_URL
327236
327240
  }, {
@@ -340003,7 +340007,7 @@ async function createRuntime() {
340003
340007
  bootstrapTelemetry();
340004
340008
  const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
340005
340009
  [import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur-agent",
340006
- [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.80.9"
340010
+ [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.80.10"
340007
340011
  }));
340008
340012
  const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
340009
340013
  resource,
@@ -340036,11 +340040,11 @@ async function createRuntime() {
340036
340040
  setMeterProvider(meterProvider);
340037
340041
  setLoggerProvider(loggerProvider);
340038
340042
  if (meterProvider) {
340039
- const meter = meterProvider.getMeter("ur-agent", "1.80.9");
340043
+ const meter = meterProvider.getMeter("ur-agent", "1.80.10");
340040
340044
  setMeter(meter, (name, options2) => meter.createCounter(name, options2));
340041
340045
  }
340042
340046
  if (loggerProvider) {
340043
- setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.80.9"));
340047
+ setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.80.10"));
340044
340048
  }
340045
340049
  if (!cleanupRegistered3) {
340046
340050
  cleanupRegistered3 = true;
@@ -340702,9 +340706,9 @@ async function assertMinVersion() {
340702
340706
  if (false) {}
340703
340707
  try {
340704
340708
  const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
340705
- if (versionConfig.minVersion && lt("1.80.9", versionConfig.minVersion)) {
340709
+ if (versionConfig.minVersion && lt("1.80.10", versionConfig.minVersion)) {
340706
340710
  console.error(`
340707
- It looks like your version of UR (${"1.80.9"}) needs an update.
340711
+ It looks like your version of UR (${"1.80.10"}) needs an update.
340708
340712
  A newer version (${versionConfig.minVersion} or higher) is required to continue.
340709
340713
 
340710
340714
  To update, please run:
@@ -340920,7 +340924,7 @@ async function installGlobalPackage(specificVersion) {
340920
340924
  logError2(new AutoUpdaterError("Another process is currently installing an update"));
340921
340925
  logEvent("tengu_auto_updater_lock_contention", {
340922
340926
  pid: process.pid,
340923
- currentVersion: "1.80.9"
340927
+ currentVersion: "1.80.10"
340924
340928
  });
340925
340929
  return "in_progress";
340926
340930
  }
@@ -340929,7 +340933,7 @@ async function installGlobalPackage(specificVersion) {
340929
340933
  if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
340930
340934
  logError2(new Error("Windows NPM detected in WSL environment"));
340931
340935
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
340932
- currentVersion: "1.80.9"
340936
+ currentVersion: "1.80.10"
340933
340937
  });
340934
340938
  console.error(`
340935
340939
  Error: Windows NPM detected in WSL
@@ -341464,7 +341468,7 @@ function detectLinuxGlobPatternWarnings() {
341464
341468
  }
341465
341469
  async function getDoctorDiagnostic() {
341466
341470
  const installationType = await getCurrentInstallationType();
341467
- const version2 = typeof MACRO !== "undefined" ? "1.80.9" : "unknown";
341471
+ const version2 = typeof MACRO !== "undefined" ? "1.80.10" : "unknown";
341468
341472
  const installationPath = await getInstallationPath();
341469
341473
  const invokedBinary = getInvokedBinary();
341470
341474
  const multipleInstallations = await detectMultipleInstallations();
@@ -342399,8 +342403,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
342399
342403
  const maxVersion = await getMaxVersion();
342400
342404
  if (maxVersion && gt(version2, maxVersion)) {
342401
342405
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
342402
- if (gte("1.80.9", maxVersion)) {
342403
- logForDebugging(`Native installer: current version ${"1.80.9"} is already at or above maxVersion ${maxVersion}, skipping update`);
342406
+ if (gte("1.80.10", maxVersion)) {
342407
+ logForDebugging(`Native installer: current version ${"1.80.10"} is already at or above maxVersion ${maxVersion}, skipping update`);
342404
342408
  logEvent("tengu_native_update_skipped_max_version", {
342405
342409
  latency_ms: Date.now() - startTime,
342406
342410
  max_version: maxVersion,
@@ -342411,7 +342415,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
342411
342415
  version2 = maxVersion;
342412
342416
  }
342413
342417
  }
342414
- if (!forceReinstall && version2 === "1.80.9" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
342418
+ if (!forceReinstall && version2 === "1.80.10" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
342415
342419
  logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
342416
342420
  logEvent("tengu_native_update_complete", {
342417
342421
  latency_ms: Date.now() - startTime,
@@ -413067,7 +413071,7 @@ function isAnyTracingEnabled() {
413067
413071
  return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
413068
413072
  }
413069
413073
  function getTracer() {
413070
- return import_api39.trace.getTracer("ur-agent.gen_ai", "1.80.9");
413074
+ return import_api39.trace.getTracer("ur-agent.gen_ai", "1.80.10");
413071
413075
  }
413072
413076
  function createSpanAttributes(spanType, customAttributes = {}) {
413073
413077
  const baseAttributes = getTelemetryAttributes();
@@ -443196,7 +443200,7 @@ function Feedback({
443196
443200
  platform: env2.platform,
443197
443201
  gitRepo: envInfo.isGit,
443198
443202
  terminal: env2.terminal,
443199
- version: "1.80.9",
443203
+ version: "1.80.10",
443200
443204
  transcript: normalizeMessagesForAPI(messages),
443201
443205
  errors: sanitizedErrors,
443202
443206
  lastApiRequest: getLastAPIRequest(),
@@ -443388,7 +443392,7 @@ function Feedback({
443388
443392
  ", ",
443389
443393
  env2.terminal,
443390
443394
  ", v",
443391
- "1.80.9"
443395
+ "1.80.10"
443392
443396
  ]
443393
443397
  }, undefined, true, undefined, this)
443394
443398
  ]
@@ -443494,7 +443498,7 @@ ${sanitizedDescription}
443494
443498
  ` + `**Environment Info**
443495
443499
  ` + `- Platform: ${env2.platform}
443496
443500
  ` + `- Terminal: ${env2.terminal}
443497
- ` + `- Version: ${"1.80.9"}
443501
+ ` + `- Version: ${"1.80.10"}
443498
443502
  ` + `- Feedback ID: ${feedbackId}
443499
443503
  ` + `
443500
443504
  **Errors**
@@ -446604,7 +446608,7 @@ function buildPrimarySection() {
446604
446608
  }, undefined, false, undefined, this);
446605
446609
  return [{
446606
446610
  label: "Version",
446607
- value: "1.80.9"
446611
+ value: "1.80.10"
446608
446612
  }, {
446609
446613
  label: "Session name",
446610
446614
  value: nameValue
@@ -449986,7 +449990,7 @@ function Config({
449986
449990
  }
449987
449991
  }, undefined, false, undefined, this)
449988
449992
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime179.jsxDEV(ChannelDowngradeDialog, {
449989
- currentVersion: "1.80.9",
449993
+ currentVersion: "1.80.10",
449990
449994
  onChoice: (choice) => {
449991
449995
  setShowSubmenu(null);
449992
449996
  setTabsHidden(false);
@@ -449998,7 +450002,7 @@ function Config({
449998
450002
  autoUpdatesChannel: "stable"
449999
450003
  };
450000
450004
  if (choice === "stay") {
450001
- newSettings.minimumVersion = "1.80.9";
450005
+ newSettings.minimumVersion = "1.80.10";
450002
450006
  }
450003
450007
  updateSettingsForSource("userSettings", newSettings);
450004
450008
  setSettingsData((prev_27) => ({
@@ -458307,7 +458311,7 @@ function HelpV2(t0) {
458307
458311
  let t6;
458308
458312
  if ($2[31] !== tabs) {
458309
458313
  t6 = /* @__PURE__ */ jsx_dev_runtime206.jsxDEV(Tabs, {
458310
- title: `UR v${"1.80.9"}`,
458314
+ title: `UR v${"1.80.10"}`,
458311
458315
  color: "professionalBlue",
458312
458316
  defaultTab: "general",
458313
458317
  children: tabs
@@ -459240,7 +459244,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
459240
459244
  async function handleInitialize(options2) {
459241
459245
  return {
459242
459246
  name: "UR",
459243
- version: "1.80.9",
459247
+ version: "1.80.10",
459244
459248
  protocolVersion: "0.1.0",
459245
459249
  workspaceRoot: options2.cwd,
459246
459250
  capabilities: {
@@ -476348,7 +476352,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
476348
476352
  return [];
476349
476353
  }
476350
476354
  }
476351
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.80.9") {
476355
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.80.10") {
476352
476356
  if (process.env.USER_TYPE === "ant") {
476353
476357
  const changelog = "";
476354
476358
  if (changelog) {
@@ -476375,7 +476379,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.80.9")
476375
476379
  releaseNotes
476376
476380
  };
476377
476381
  }
476378
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.80.9") {
476382
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.80.10") {
476379
476383
  if (process.env.USER_TYPE === "ant") {
476380
476384
  const changelog = "";
476381
476385
  if (changelog) {
@@ -479280,7 +479284,7 @@ function getRecentActivitySync() {
479280
479284
  return cachedActivity;
479281
479285
  }
479282
479286
  function getLogoDisplayData() {
479283
- const version2 = process.env.DEMO_VERSION ?? "1.80.9";
479287
+ const version2 = process.env.DEMO_VERSION ?? "1.80.10";
479284
479288
  const serverUrl = getDirectConnectServerUrl();
479285
479289
  const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
479286
479290
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -480148,7 +480152,7 @@ function LogoV2() {
480148
480152
  if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
480149
480153
  t2 = () => {
480150
480154
  const currentConfig = getGlobalConfig();
480151
- if (currentConfig.lastReleaseNotesSeen === "1.80.9") {
480155
+ if (currentConfig.lastReleaseNotesSeen === "1.80.10") {
480152
480156
  return;
480153
480157
  }
480154
480158
  saveGlobalConfig(_temp325);
@@ -480833,12 +480837,12 @@ function LogoV2() {
480833
480837
  return t41;
480834
480838
  }
480835
480839
  function _temp325(current) {
480836
- if (current.lastReleaseNotesSeen === "1.80.9") {
480840
+ if (current.lastReleaseNotesSeen === "1.80.10") {
480837
480841
  return current;
480838
480842
  }
480839
480843
  return {
480840
480844
  ...current,
480841
- lastReleaseNotesSeen: "1.80.9"
480845
+ lastReleaseNotesSeen: "1.80.10"
480842
480846
  };
480843
480847
  }
480844
480848
  function _temp241(s_0) {
@@ -496930,7 +496934,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
496930
496934
  if (spec.name !== specName) {
496931
496935
  throw new Error("Agentic CI workflow spec name does not match");
496932
496936
  }
496933
- const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.80.9" : "1.80.9");
496937
+ const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.80.10" : "1.80.10");
496934
496938
  if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
496935
496939
  throw new Error("invalid ur-agent package version");
496936
496940
  }
@@ -497923,7 +497927,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
497923
497927
  path: ".github/workflows/ur.yml",
497924
497928
  root: "project",
497925
497929
  content: compileAgenticCiWorkflow("default", {
497926
- packageVersion: typeof MACRO !== "undefined" ? "1.80.9" : "1.80.9"
497930
+ packageVersion: typeof MACRO !== "undefined" ? "1.80.10" : "1.80.10"
497927
497931
  })
497928
497932
  },
497929
497933
  {
@@ -497986,7 +497990,7 @@ function value(tokens, flag) {
497986
497990
  return index2 >= 0 ? tokens[index2 + 1] : undefined;
497987
497991
  }
497988
497992
  function cliVersion() {
497989
- return typeof MACRO !== "undefined" ? "1.80.9" : "1.80.9";
497993
+ return typeof MACRO !== "undefined" ? "1.80.10" : "1.80.10";
497990
497994
  }
497991
497995
  function workflowPath(cwd2) {
497992
497996
  return join168(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
@@ -503842,7 +503846,7 @@ function createAcpStdioApp(deps) {
503842
503846
  }
503843
503847
  },
503844
503848
  authMethods: [],
503845
- agentInfo: { name: "UR-Nexus", version: "1.80.9" }
503849
+ agentInfo: { name: "UR-Nexus", version: "1.80.10" }
503846
503850
  })).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
503847
503851
  const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
503848
503852
  await runtime2.announce({
@@ -503939,7 +503943,7 @@ function createAcpStdioAgent(deps) {
503939
503943
  }
503940
503944
  },
503941
503945
  authMethods: [],
503942
- agentInfo: { name: "UR-Nexus", version: "1.80.9" }
503946
+ agentInfo: { name: "UR-Nexus", version: "1.80.10" }
503943
503947
  });
503944
503948
  return;
503945
503949
  case "authenticate":
@@ -715165,7 +715169,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
715165
715169
  smapsRollup,
715166
715170
  platform: process.platform,
715167
715171
  nodeVersion: process.version,
715168
- ccVersion: "1.80.9"
715172
+ ccVersion: "1.80.10"
715169
715173
  };
715170
715174
  }
715171
715175
  async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
@@ -715754,7 +715758,7 @@ var init_bridge_kick = __esm(() => {
715754
715758
  var call154 = async () => {
715755
715759
  return {
715756
715760
  type: "text",
715757
- value: "1.80.9"
715761
+ value: "1.80.10"
715758
715762
  };
715759
715763
  }, version2, version_default;
715760
715764
  var init_version = __esm(() => {
@@ -726997,7 +727001,7 @@ function generateHtmlReport(data, insights) {
726997
727001
  </html>`;
726998
727002
  }
726999
727003
  function buildExportData(data, insights, facets, remoteStats) {
727000
- const version3 = typeof MACRO !== "undefined" ? "1.80.9" : "unknown";
727004
+ const version3 = typeof MACRO !== "undefined" ? "1.80.10" : "unknown";
727001
727005
  const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
727002
727006
  const facets_summary = {
727003
727007
  total: facets.size,
@@ -731310,7 +731314,7 @@ var init_sessionStorage = __esm(() => {
731310
731314
  init_settings2();
731311
731315
  init_slowOperations();
731312
731316
  init_uuid();
731313
- VERSION7 = typeof MACRO !== "undefined" ? "1.80.9" : "unknown";
731317
+ VERSION7 = typeof MACRO !== "undefined" ? "1.80.10" : "unknown";
731314
731318
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
731315
731319
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
731316
731320
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -732525,7 +732529,7 @@ var init_filesystem = __esm(() => {
732525
732529
  });
732526
732530
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
732527
732531
  const nonce = randomBytes24(16).toString("hex");
732528
- return join243(getURTempDir(), "bundled-skills", "1.80.9", nonce);
732532
+ return join243(getURTempDir(), "bundled-skills", "1.80.10", nonce);
732529
732533
  });
732530
732534
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
732531
732535
  });
@@ -738915,7 +738919,7 @@ function computeFingerprint(messageText2, version3) {
738915
738919
  }
738916
738920
  function computeFingerprintFromMessages(messages) {
738917
738921
  const firstMessageText = extractFirstMessageText(messages);
738918
- return computeFingerprint(firstMessageText, "1.80.9");
738922
+ return computeFingerprint(firstMessageText, "1.80.10");
738919
738923
  }
738920
738924
  var FINGERPRINT_SALT = "59cf53e54c78";
738921
738925
  var init_fingerprint = () => {};
@@ -740840,7 +740844,7 @@ async function sideQuery(opts) {
740840
740844
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
740841
740845
  }
740842
740846
  const messageText2 = extractFirstUserMessageText(messages);
740843
- const fingerprint2 = computeFingerprint(messageText2, "1.80.9");
740847
+ const fingerprint2 = computeFingerprint(messageText2, "1.80.10");
740844
740848
  const attributionHeader = getAttributionHeader(fingerprint2);
740845
740849
  const systemBlocks = [
740846
740850
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -745674,7 +745678,7 @@ function buildSystemInitMessage(inputs) {
745674
745678
  slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
745675
745679
  apiKeySource: getURHQApiKeyWithSource().source,
745676
745680
  betas: getSdkBetas(),
745677
- ur_version: "1.80.9",
745681
+ ur_version: "1.80.10",
745678
745682
  output_style: outputStyle,
745679
745683
  agents: inputs.agents.map((agent2) => agent2.agentType),
745680
745684
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
@@ -759510,7 +759514,7 @@ var init_useVoiceEnabled = __esm(() => {
759510
759514
  function getSemverPart(version3) {
759511
759515
  return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
759512
759516
  }
759513
- function useUpdateNotification(updatedVersion, initialVersion = "1.80.9") {
759517
+ function useUpdateNotification(updatedVersion, initialVersion = "1.80.10") {
759514
759518
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react225.useState(() => getSemverPart(initialVersion));
759515
759519
  if (!updatedVersion) {
759516
759520
  return null;
@@ -759559,7 +759563,7 @@ function AutoUpdater({
759559
759563
  return;
759560
759564
  }
759561
759565
  if (false) {}
759562
- const currentVersion = "1.80.9";
759566
+ const currentVersion = "1.80.10";
759563
759567
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
759564
759568
  let latestVersion = await getLatestVersion(channel);
759565
759569
  const isDisabled = isAutoUpdaterDisabled();
@@ -759788,12 +759792,12 @@ function NativeAutoUpdater({
759788
759792
  logEvent("tengu_native_auto_updater_start", {});
759789
759793
  try {
759790
759794
  const maxVersion = await getMaxVersion();
759791
- if (maxVersion && gt("1.80.9", maxVersion)) {
759795
+ if (maxVersion && gt("1.80.10", maxVersion)) {
759792
759796
  const msg = await getMaxVersionMessage();
759793
759797
  setMaxVersionIssue(msg ?? "affects your version");
759794
759798
  }
759795
759799
  const result = await installLatest(channel);
759796
- const currentVersion = "1.80.9";
759800
+ const currentVersion = "1.80.10";
759797
759801
  const latencyMs = Date.now() - startTime;
759798
759802
  if (result.lockFailed) {
759799
759803
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -759930,17 +759934,17 @@ function PackageManagerAutoUpdater(t0) {
759930
759934
  const maxVersion = await getMaxVersion();
759931
759935
  if (maxVersion && latest && gt(latest, maxVersion)) {
759932
759936
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
759933
- if (gte("1.80.9", maxVersion)) {
759934
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.80.9"} is already at or above maxVersion ${maxVersion}, skipping update`);
759937
+ if (gte("1.80.10", maxVersion)) {
759938
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.80.10"} is already at or above maxVersion ${maxVersion}, skipping update`);
759935
759939
  setUpdateAvailable(false);
759936
759940
  return;
759937
759941
  }
759938
759942
  latest = maxVersion;
759939
759943
  }
759940
- const hasUpdate = latest && !gte("1.80.9", latest) && !shouldSkipVersion(latest);
759944
+ const hasUpdate = latest && !gte("1.80.10", latest) && !shouldSkipVersion(latest);
759941
759945
  setUpdateAvailable(!!hasUpdate);
759942
759946
  if (hasUpdate) {
759943
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.80.9"} -> ${latest}`);
759947
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.80.10"} -> ${latest}`);
759944
759948
  }
759945
759949
  };
759946
759950
  $2[0] = t1;
@@ -759974,7 +759978,7 @@ function PackageManagerAutoUpdater(t0) {
759974
759978
  wrap: "truncate",
759975
759979
  children: [
759976
759980
  "currentVersion: ",
759977
- "1.80.9"
759981
+ "1.80.10"
759978
759982
  ]
759979
759983
  }, undefined, true, undefined, this);
759980
759984
  $2[3] = verbose;
@@ -770827,7 +770831,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
770827
770831
  project_dir: getOriginalCwd(),
770828
770832
  added_dirs: addedDirs
770829
770833
  },
770830
- version: "1.80.9",
770834
+ version: "1.80.10",
770831
770835
  output_style: {
770832
770836
  name: outputStyleName
770833
770837
  },
@@ -770962,7 +770966,7 @@ function StatusLineInner({
770962
770966
  const attention = customStatusError ?? taskAttention;
770963
770967
  const terminalSize = React133.useContext(TerminalSizeContext);
770964
770968
  const defaultStatusLineText = buildDefaultStatusBar({
770965
- version: "1.80.9",
770969
+ version: "1.80.10",
770966
770970
  providerLabel: providerRuntime.providerLabel,
770967
770971
  authMode: providerRuntime.authLabel,
770968
770972
  model: renderModelName(mainLoopModel) || providerRuntime.model || "",
@@ -783217,7 +783221,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
783217
783221
  } catch {}
783218
783222
  const data = {
783219
783223
  trigger: trigger2,
783220
- version: "1.80.9",
783224
+ version: "1.80.10",
783221
783225
  platform: process.platform,
783222
783226
  transcript,
783223
783227
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -795586,7 +795590,7 @@ function WelcomeV2() {
795586
795590
  dimColor: true,
795587
795591
  children: [
795588
795592
  "v",
795589
- "1.80.9"
795593
+ "1.80.10"
795590
795594
  ]
795591
795595
  }, undefined, true, undefined, this)
795592
795596
  ]
@@ -796846,7 +796850,7 @@ function completeOnboarding() {
796846
796850
  saveGlobalConfig((current) => ({
796847
796851
  ...current,
796848
796852
  hasCompletedOnboarding: true,
796849
- lastOnboardingVersion: "1.80.9"
796853
+ lastOnboardingVersion: "1.80.10"
796850
796854
  }));
796851
796855
  }
796852
796856
  function showDialog(root2, renderer) {
@@ -801992,7 +801996,7 @@ function appendToLog(path28, message) {
801992
801996
  cwd: getFsImplementation().cwd(),
801993
801997
  userType: process.env.USER_TYPE,
801994
801998
  sessionId: getSessionId(),
801995
- version: "1.80.9"
801999
+ version: "1.80.10"
801996
802000
  };
801997
802001
  getLogWriter(path28).write(messageWithTimestamp);
801998
802002
  }
@@ -806156,8 +806160,8 @@ async function getEnvLessBridgeConfig() {
806156
806160
  }
806157
806161
  async function checkEnvLessBridgeMinVersion() {
806158
806162
  const cfg = await getEnvLessBridgeConfig();
806159
- if (cfg.min_version && lt("1.80.9", cfg.min_version)) {
806160
- return `Your version of UR (${"1.80.9"}) is too old for Remote Control.
806163
+ if (cfg.min_version && lt("1.80.10", cfg.min_version)) {
806164
+ return `Your version of UR (${"1.80.10"}) is too old for Remote Control.
806161
806165
  Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
806162
806166
  }
806163
806167
  return null;
@@ -806631,7 +806635,7 @@ async function initBridgeCore(params) {
806631
806635
  const rawApi = createBridgeApiClient({
806632
806636
  baseUrl,
806633
806637
  getAccessToken,
806634
- runnerVersion: "1.80.9",
806638
+ runnerVersion: "1.80.10",
806635
806639
  onDebug: logForDebugging,
806636
806640
  onAuth401,
806637
806641
  getTrustedDeviceToken
@@ -816104,7 +816108,7 @@ function getAgUiCapabilities() {
816104
816108
  name: "UR-Nexus",
816105
816109
  type: "ur-nexus",
816106
816110
  description: "Provider-flexible, local-first autonomous engineering workflow agent.",
816107
- version: "1.80.9",
816111
+ version: "1.80.10",
816108
816112
  provider: "UR",
816109
816113
  documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
816110
816114
  },
@@ -817331,7 +817335,7 @@ function createMCPServer(cwd4, debug2, verbose) {
817331
817335
  };
817332
817336
  const server2 = new Server({
817333
817337
  name: "ur-nexus",
817334
- version: "1.80.9"
817338
+ version: "1.80.10"
817335
817339
  }, {
817336
817340
  capabilities: {
817337
817341
  tools: {}
@@ -818535,7 +818539,7 @@ function thrownResponse(error40) {
818535
818539
  }
818536
818540
  async function createUrMcp2026Runtime(options5) {
818537
818541
  const server2 = createMCPServer(options5.cwd, options5.debug === true, options5.verbose === true);
818538
- const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.80.9" }, { capabilities: {} });
818542
+ const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.80.10" }, { capabilities: {} });
818539
818543
  const [clientTransport, serverTransport] = createLinkedTransportPair();
818540
818544
  try {
818541
818545
  await server2.connect(serverTransport);
@@ -818546,7 +818550,7 @@ async function createUrMcp2026Runtime(options5) {
818546
818550
  }
818547
818551
  const runtime2 = new Mcp2026Runtime({
818548
818552
  cwd: options5.cwd,
818549
- version: "1.80.9",
818553
+ version: "1.80.10",
818550
818554
  backend: {
818551
818555
  listTools: async () => {
818552
818556
  const listed = await client2.listTools();
@@ -821281,7 +821285,7 @@ async function update() {
821281
821285
  logEvent("tengu_update_check", {});
821282
821286
  const diagnostic2 = await getDoctorDiagnostic();
821283
821287
  const result = await checkUpgradeStatus({
821284
- currentVersion: "1.80.9",
821288
+ currentVersion: "1.80.10",
821285
821289
  packageName: UR_AGENT_PACKAGE_NAME,
821286
821290
  installationType: diagnostic2.installationType,
821287
821291
  latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
@@ -822609,7 +822613,7 @@ ${customInstructions}` : customInstructions;
822609
822613
  }
822610
822614
  }
822611
822615
  logForDiagnosticsNoPII("info", "started", {
822612
- version: "1.80.9",
822616
+ version: "1.80.10",
822613
822617
  is_native_binary: isInBundledMode()
822614
822618
  });
822615
822619
  registerCleanup(async () => {
@@ -823396,7 +823400,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
823396
823400
  pendingHookMessages
823397
823401
  }, renderAndRun);
823398
823402
  }
823399
- }).version("1.80.9 (UR-Nexus)", "-v, --version", "Output the version number");
823403
+ }).version("1.80.10 (UR-Nexus)", "-v, --version", "Output the version number");
823400
823404
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
823401
823405
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
823402
823406
  if (canUserConfigureAdvisor()) {
@@ -824523,7 +824527,7 @@ if (false) {}
824523
824527
  async function main2() {
824524
824528
  const args = process.argv.slice(2);
824525
824529
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
824526
- console.log(`${"1.80.9"} (UR-Nexus)`);
824530
+ console.log(`${"1.80.10"} (UR-Nexus)`);
824527
824531
  return;
824528
824532
  }
824529
824533
  if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {
@@ -9,6 +9,12 @@ reproducible autonomous software engineering agent: every substantial task can
9
9
  be driven as `spec -> plan -> patch -> test -> report -> rollback`, with the
10
10
  spec as the durable source of truth and command evidence as the success gate.
11
11
 
12
+ ## v1.80.10 Addition
13
+
14
+ | Addition | Surface | What it adds |
15
+ | --- | --- | --- |
16
+ | Deterministic read-only agent registry | Public bundle, development runtime, `Agent` gate | Ships the protected `Explore` and `Plan` definitions in every public runtime so task-free research always has a real read-only destination. Tests now exercise the real registry and verify the release feature flag. |
17
+
12
18
  ## v1.80.9 Addition
13
19
 
14
20
  | Addition | Surface | What it adds |
@@ -58,7 +58,8 @@ it to `0` to require a task before every mutation. Set `enabled` to `false` to
58
58
  return to advisory task tracking. Profiles that omit `TaskCreate` are not
59
59
  gated, because they could not satisfy the requirement. The main session may
60
60
  launch UR's shipped `Explore` and `Plan` agents before a task exists in any
61
- permission mode. These exact built-in definitions are forced read-only; custom,
61
+ permission mode. These core definitions are always registered in public builds
62
+ and are forced read-only; custom,
62
63
  write-capable, nested, named/team, and worktree delegation still requires an
63
64
  actionable parent task. As provider-independent compatibility, an unnamed
64
65
  main-session `general-purpose` call is reduced to the shipped Explore definition
@@ -113,6 +113,10 @@ ur provider status
113
113
  shape without relying on a specific model name. Prompts that also direct
114
114
  implementation, testing, command execution, or file changes remain blocked
115
115
  until an actionable task exists.
116
+ - If the same failure persists on 1.80.9, upgrade to 1.80.10. The 1.80.9 public
117
+ bundle could still compile the protected `Explore` and `Plan` registry entries
118
+ out, leaving the correct routing decision with no read-only destination.
119
+ Version 1.80.10 makes both core agents deterministic in public builds.
116
120
 
117
121
  ### Ollama stops with `unavailable tool "WebSearch"`
118
122
 
@@ -19,10 +19,10 @@ You need:
19
19
 
20
20
  ```sh
21
21
  ur --version
22
- # expected for this release: "1.80.9 (UR-Nexus)"
22
+ # expected for this release: "1.80.10 (UR-Nexus)"
23
23
  ```
24
24
 
25
- ### 0.0 Read-only research delegation starts cleanly (1.80.9)
25
+ ### 0.0 Read-only research delegation starts cleanly (1.80.10)
26
26
 
27
27
  Start an interactive session with task enforcement enabled and ask UR to
28
28
  research a change, both normally and from Plan Mode. Before any task exists,
@@ -31,6 +31,11 @@ built-in `Explore` and `Plan` agent calls should initialize without
31
31
  Accept Edits or Approve All. Custom agents and ordinary general-purpose agents
32
32
  should remain blocked until they have an actionable parent task.
33
33
 
34
+ The installed public bundle must list both core definitions in its active
35
+ built-in registry; a correct research classifier without those definitions is
36
+ not a passing state. Development and release builds must both enable
37
+ `BUILTIN_EXPLORE_PLAN_AGENTS`.
38
+
34
39
  Repeat with multiple available model families. A model may correctly emit
35
40
  `subagent_type: "Explore"`; if it instead emits `general-purpose` with an
36
41
  explicit read-only brief or a pure research/report-only brief, UR must safely
@@ -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.80.9</p>
48
+ <p class="eyebrow">Version 1.80.10</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.80.9"
10
+ version = "1.80.10"
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.80.9",
5
+ "version": "1.80.10",
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.80.9",
3
+ "version": "1.80.10",
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",
@@ -15,6 +15,9 @@ import { plugin } from 'bun'
15
15
 
16
16
  const enabledFlags = new Set([
17
17
  'TREE_SITTER_BASH',
18
+ // Explore/Plan are a supported public capability and the safe target for
19
+ // task-free read-only delegation. Keep development aligned with bundles.
20
+ 'BUILTIN_EXPLORE_PLAN_AGENTS',
18
21
  ...(process.env.FEATURE_FLAGS ?? '').split(',').filter(Boolean),
19
22
  ])
20
23