ur-agent 1.81.3 → 1.81.4

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,12 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.81.4
4
+
5
+ - Unified the welcome-screen UR wordmark, outlined depth, decorative marks,
6
+ house, divider, and outer frame on the same theme-aware UR brand color. This
7
+ removes the muddy olive/brown appearance caused by mixing three palette
8
+ colors while preserving the wordmark geometry and screen-reader output.
9
+
3
10
  ## 1.81.3
4
11
 
5
12
  - Brightened the welcome-screen UR wordmark with a polished three-tone finish:
package/dist/cli.js CHANGED
@@ -108236,7 +108236,7 @@ var init_auth = __esm(() => {
108236
108236
 
108237
108237
  // src/utils/userAgent.ts
108238
108238
  function getURCodeUserAgent() {
108239
- return `ur/${"1.81.3"}`;
108239
+ return `ur/${"1.81.4"}`;
108240
108240
  }
108241
108241
 
108242
108242
  // src/utils/workloadContext.ts
@@ -108258,7 +108258,7 @@ function getUserAgent() {
108258
108258
  const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
108259
108259
  const workload = getWorkload();
108260
108260
  const workloadSuffix = workload ? `, workload/${workload}` : "";
108261
- return `ur-cli/${"1.81.3"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
108261
+ return `ur-cli/${"1.81.4"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
108262
108262
  }
108263
108263
  function getMCPUserAgent() {
108264
108264
  const parts = [];
@@ -108272,7 +108272,7 @@ function getMCPUserAgent() {
108272
108272
  parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
108273
108273
  }
108274
108274
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
108275
- return `ur/${"1.81.3"}${suffix}`;
108275
+ return `ur/${"1.81.4"}${suffix}`;
108276
108276
  }
108277
108277
  function getWebFetchUserAgent() {
108278
108278
  return `UR-User (${getURCodeUserAgent()})`;
@@ -108410,7 +108410,7 @@ var init_user = __esm(() => {
108410
108410
  deviceId,
108411
108411
  sessionId: getSessionId(),
108412
108412
  email: getEmail(),
108413
- appVersion: "1.81.3",
108413
+ appVersion: "1.81.4",
108414
108414
  platform: getHostPlatformForAnalytics(),
108415
108415
  organizationUuid,
108416
108416
  accountUuid,
@@ -116297,7 +116297,7 @@ var init_metadata = __esm(() => {
116297
116297
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
116298
116298
  WHITESPACE_REGEX = /\s+/;
116299
116299
  getVersionBase = memoize_default(() => {
116300
- const match = "1.81.3".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
116300
+ const match = "1.81.4".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
116301
116301
  return match ? match[0] : undefined;
116302
116302
  });
116303
116303
  buildEnvContext = memoize_default(async () => {
@@ -116337,7 +116337,7 @@ var init_metadata = __esm(() => {
116337
116337
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
116338
116338
  isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
116339
116339
  isURAiAuth: isURAISubscriber(),
116340
- version: "1.81.3",
116340
+ version: "1.81.4",
116341
116341
  versionBase: getVersionBase(),
116342
116342
  buildTime: "",
116343
116343
  deploymentEnvironment: env2.detectDeploymentEnvironment(),
@@ -117007,7 +117007,7 @@ function initialize1PEventLogging() {
117007
117007
  const platform2 = getPlatform();
117008
117008
  const attributes = {
117009
117009
  [import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
117010
- [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.81.3"
117010
+ [import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.81.4"
117011
117011
  };
117012
117012
  if (platform2 === "wsl") {
117013
117013
  const wslVersion = getWslVersion();
@@ -117035,7 +117035,7 @@ function initialize1PEventLogging() {
117035
117035
  })
117036
117036
  ]
117037
117037
  });
117038
- firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.81.3");
117038
+ firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.81.4");
117039
117039
  }
117040
117040
  async function reinitialize1PEventLoggingIfConfigChanged() {
117041
117041
  if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
@@ -127001,7 +127001,7 @@ function formatA2AAgentCard(options = {}, pretty = true) {
127001
127001
  function formatA2AV1AgentCard(options = {}, pretty = true) {
127002
127002
  return JSON.stringify(buildA2AV1AgentCard(options), null, pretty ? 2 : 0);
127003
127003
  }
127004
- var urVersion = "1.81.3", researchSnapshotDate = "2026-08-10", coverage, priorityRoadmap;
127004
+ var urVersion = "1.81.4", researchSnapshotDate = "2026-08-10", coverage, priorityRoadmap;
127005
127005
  var init_trends = __esm(() => {
127006
127006
  init_a2aCardSignature();
127007
127007
  coverage = [
@@ -129891,7 +129891,7 @@ function getAttributionHeader(fingerprint) {
129891
129891
  if (!isAttributionHeaderEnabled()) {
129892
129892
  return "";
129893
129893
  }
129894
- const version2 = `${"1.81.3"}.${fingerprint}`;
129894
+ const version2 = `${"1.81.4"}.${fingerprint}`;
129895
129895
  const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
129896
129896
  const cch = "";
129897
129897
  const workload = getWorkload();
@@ -184812,7 +184812,7 @@ var init_projectSafety = __esm(() => {
184812
184812
  function getInstruments() {
184813
184813
  if (instruments)
184814
184814
  return instruments;
184815
- const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.81.3");
184815
+ const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.81.4");
184816
184816
  instruments = {
184817
184817
  operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
184818
184818
  description: "GenAI operation duration.",
@@ -184910,7 +184910,7 @@ function genAiAgentAttributes() {
184910
184910
  "gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
184911
184911
  "gen_ai.provider.name": "ur",
184912
184912
  "gen_ai.agent.name": "UR-Nexus",
184913
- "gen_ai.agent.version": "1.81.3"
184913
+ "gen_ai.agent.version": "1.81.4"
184914
184914
  };
184915
184915
  }
184916
184916
  function genAiWorkflowAttributes(workflowName, workflowRunId) {
@@ -184931,7 +184931,7 @@ function genAiWorkflowAttributes(workflowName, workflowRunId) {
184931
184931
  function startGenAiWorkflowSpan(workflowName, workflowRunId) {
184932
184932
  const attributes = genAiWorkflowAttributes(workflowName, workflowRunId);
184933
184933
  const name = typeof attributes["gen_ai.workflow.name"] === "string" ? `invoke_workflow ${attributes["gen_ai.workflow.name"]}` : GEN_AI_OPERATION_INVOKE_WORKFLOW;
184934
- return import_api10.trace.getTracer("ur-agent.gen_ai", "1.81.3").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
184934
+ return import_api10.trace.getTracer("ur-agent.gen_ai", "1.81.4").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
184935
184935
  }
184936
184936
  function endGenAiWorkflowSpan(span, options2 = {}) {
184937
184937
  try {
@@ -184969,7 +184969,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
184969
184969
  if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
184970
184970
  attributes["gen_ai.memory.record.count"] = options2.recordCount;
184971
184971
  }
184972
- return import_api10.trace.getTracer("ur-agent.gen_ai", "1.81.3").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
184972
+ return import_api10.trace.getTracer("ur-agent.gen_ai", "1.81.4").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
184973
184973
  }
184974
184974
  function endGenAiMemorySpan(span, options2 = {}) {
184975
184975
  try {
@@ -278684,7 +278684,7 @@ function getTelemetryAttributes() {
278684
278684
  attributes["session.id"] = sessionId;
278685
278685
  }
278686
278686
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
278687
- attributes["app.version"] = "1.81.3";
278687
+ attributes["app.version"] = "1.81.4";
278688
278688
  }
278689
278689
  const oauthAccount = getOauthAccountInfo();
278690
278690
  if (oauthAccount) {
@@ -320088,7 +320088,7 @@ function getInstallationEnv() {
320088
320088
  return;
320089
320089
  }
320090
320090
  function getURCodeVersion() {
320091
- return "1.81.3";
320091
+ return "1.81.4";
320092
320092
  }
320093
320093
  async function getInstalledVSCodeExtensionVersion(command) {
320094
320094
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -327458,7 +327458,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
327458
327458
  const client2 = new Client({
327459
327459
  name: "ur",
327460
327460
  title: "UR",
327461
- version: "1.81.3",
327461
+ version: "1.81.4",
327462
327462
  description: "UR-Nexus autonomous engineering workflow engine",
327463
327463
  websiteUrl: PRODUCT_URL
327464
327464
  }, {
@@ -327819,7 +327819,7 @@ var init_client5 = __esm(() => {
327819
327819
  const client2 = new Client({
327820
327820
  name: "ur",
327821
327821
  title: "UR",
327822
- version: "1.81.3",
327822
+ version: "1.81.4",
327823
327823
  description: "UR-Nexus autonomous engineering workflow engine",
327824
327824
  websiteUrl: PRODUCT_URL
327825
327825
  }, {
@@ -340592,7 +340592,7 @@ async function createRuntime() {
340592
340592
  bootstrapTelemetry();
340593
340593
  const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
340594
340594
  [import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur-agent",
340595
- [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.81.3"
340595
+ [import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.81.4"
340596
340596
  }));
340597
340597
  const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
340598
340598
  resource,
@@ -340625,11 +340625,11 @@ async function createRuntime() {
340625
340625
  setMeterProvider(meterProvider);
340626
340626
  setLoggerProvider(loggerProvider);
340627
340627
  if (meterProvider) {
340628
- const meter = meterProvider.getMeter("ur-agent", "1.81.3");
340628
+ const meter = meterProvider.getMeter("ur-agent", "1.81.4");
340629
340629
  setMeter(meter, (name, options2) => meter.createCounter(name, options2));
340630
340630
  }
340631
340631
  if (loggerProvider) {
340632
- setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.81.3"));
340632
+ setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.81.4"));
340633
340633
  }
340634
340634
  if (!cleanupRegistered3) {
340635
340635
  cleanupRegistered3 = true;
@@ -341291,9 +341291,9 @@ async function assertMinVersion() {
341291
341291
  if (false) {}
341292
341292
  try {
341293
341293
  const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
341294
- if (versionConfig.minVersion && lt("1.81.3", versionConfig.minVersion)) {
341294
+ if (versionConfig.minVersion && lt("1.81.4", versionConfig.minVersion)) {
341295
341295
  console.error(`
341296
- It looks like your version of UR (${"1.81.3"}) needs an update.
341296
+ It looks like your version of UR (${"1.81.4"}) needs an update.
341297
341297
  A newer version (${versionConfig.minVersion} or higher) is required to continue.
341298
341298
 
341299
341299
  To update, please run:
@@ -341509,7 +341509,7 @@ async function installGlobalPackage(specificVersion) {
341509
341509
  logError2(new AutoUpdaterError("Another process is currently installing an update"));
341510
341510
  logEvent("tengu_auto_updater_lock_contention", {
341511
341511
  pid: process.pid,
341512
- currentVersion: "1.81.3"
341512
+ currentVersion: "1.81.4"
341513
341513
  });
341514
341514
  return "in_progress";
341515
341515
  }
@@ -341518,7 +341518,7 @@ async function installGlobalPackage(specificVersion) {
341518
341518
  if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
341519
341519
  logError2(new Error("Windows NPM detected in WSL environment"));
341520
341520
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
341521
- currentVersion: "1.81.3"
341521
+ currentVersion: "1.81.4"
341522
341522
  });
341523
341523
  console.error(`
341524
341524
  Error: Windows NPM detected in WSL
@@ -342053,7 +342053,7 @@ function detectLinuxGlobPatternWarnings() {
342053
342053
  }
342054
342054
  async function getDoctorDiagnostic() {
342055
342055
  const installationType = await getCurrentInstallationType();
342056
- const version2 = typeof MACRO !== "undefined" ? "1.81.3" : "unknown";
342056
+ const version2 = typeof MACRO !== "undefined" ? "1.81.4" : "unknown";
342057
342057
  const installationPath = await getInstallationPath();
342058
342058
  const invokedBinary = getInvokedBinary();
342059
342059
  const multipleInstallations = await detectMultipleInstallations();
@@ -342988,8 +342988,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
342988
342988
  const maxVersion = await getMaxVersion();
342989
342989
  if (maxVersion && gt(version2, maxVersion)) {
342990
342990
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
342991
- if (gte("1.81.3", maxVersion)) {
342992
- logForDebugging(`Native installer: current version ${"1.81.3"} is already at or above maxVersion ${maxVersion}, skipping update`);
342991
+ if (gte("1.81.4", maxVersion)) {
342992
+ logForDebugging(`Native installer: current version ${"1.81.4"} is already at or above maxVersion ${maxVersion}, skipping update`);
342993
342993
  logEvent("tengu_native_update_skipped_max_version", {
342994
342994
  latency_ms: Date.now() - startTime,
342995
342995
  max_version: maxVersion,
@@ -343000,7 +343000,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
343000
343000
  version2 = maxVersion;
343001
343001
  }
343002
343002
  }
343003
- if (!forceReinstall && version2 === "1.81.3" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
343003
+ if (!forceReinstall && version2 === "1.81.4" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
343004
343004
  logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
343005
343005
  logEvent("tengu_native_update_complete", {
343006
343006
  latency_ms: Date.now() - startTime,
@@ -413687,7 +413687,7 @@ function isAnyTracingEnabled() {
413687
413687
  return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
413688
413688
  }
413689
413689
  function getTracer() {
413690
- return import_api39.trace.getTracer("ur-agent.gen_ai", "1.81.3");
413690
+ return import_api39.trace.getTracer("ur-agent.gen_ai", "1.81.4");
413691
413691
  }
413692
413692
  function createSpanAttributes(spanType, customAttributes = {}) {
413693
413693
  const baseAttributes = getTelemetryAttributes();
@@ -443846,7 +443846,7 @@ function Feedback({
443846
443846
  platform: env2.platform,
443847
443847
  gitRepo: envInfo.isGit,
443848
443848
  terminal: env2.terminal,
443849
- version: "1.81.3",
443849
+ version: "1.81.4",
443850
443850
  transcript: normalizeMessagesForAPI(messages),
443851
443851
  errors: sanitizedErrors,
443852
443852
  lastApiRequest: getLastAPIRequest(),
@@ -444038,7 +444038,7 @@ function Feedback({
444038
444038
  ", ",
444039
444039
  env2.terminal,
444040
444040
  ", v",
444041
- "1.81.3"
444041
+ "1.81.4"
444042
444042
  ]
444043
444043
  }, undefined, true, undefined, this)
444044
444044
  ]
@@ -444144,7 +444144,7 @@ ${sanitizedDescription}
444144
444144
  ` + `**Environment Info**
444145
444145
  ` + `- Platform: ${env2.platform}
444146
444146
  ` + `- Terminal: ${env2.terminal}
444147
- ` + `- Version: ${"1.81.3"}
444147
+ ` + `- Version: ${"1.81.4"}
444148
444148
  ` + `- Feedback ID: ${feedbackId}
444149
444149
  ` + `
444150
444150
  **Errors**
@@ -447254,7 +447254,7 @@ function buildPrimarySection() {
447254
447254
  }, undefined, false, undefined, this);
447255
447255
  return [{
447256
447256
  label: "Version",
447257
- value: "1.81.3"
447257
+ value: "1.81.4"
447258
447258
  }, {
447259
447259
  label: "Session name",
447260
447260
  value: nameValue
@@ -450636,7 +450636,7 @@ function Config({
450636
450636
  }
450637
450637
  }, undefined, false, undefined, this)
450638
450638
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime179.jsxDEV(ChannelDowngradeDialog, {
450639
- currentVersion: "1.81.3",
450639
+ currentVersion: "1.81.4",
450640
450640
  onChoice: (choice) => {
450641
450641
  setShowSubmenu(null);
450642
450642
  setTabsHidden(false);
@@ -450648,7 +450648,7 @@ function Config({
450648
450648
  autoUpdatesChannel: "stable"
450649
450649
  };
450650
450650
  if (choice === "stay") {
450651
- newSettings.minimumVersion = "1.81.3";
450651
+ newSettings.minimumVersion = "1.81.4";
450652
450652
  }
450653
450653
  updateSettingsForSource("userSettings", newSettings);
450654
450654
  setSettingsData((prev_27) => ({
@@ -458957,7 +458957,7 @@ function HelpV2(t0) {
458957
458957
  let t6;
458958
458958
  if ($2[31] !== tabs) {
458959
458959
  t6 = /* @__PURE__ */ jsx_dev_runtime206.jsxDEV(Tabs, {
458960
- title: `UR v${"1.81.3"}`,
458960
+ title: `UR v${"1.81.4"}`,
458961
458961
  color: "professionalBlue",
458962
458962
  defaultTab: "general",
458963
458963
  children: tabs
@@ -459890,7 +459890,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
459890
459890
  async function handleInitialize(options2) {
459891
459891
  return {
459892
459892
  name: "UR",
459893
- version: "1.81.3",
459893
+ version: "1.81.4",
459894
459894
  protocolVersion: "0.1.0",
459895
459895
  workspaceRoot: options2.cwd,
459896
459896
  capabilities: {
@@ -476998,7 +476998,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
476998
476998
  return [];
476999
476999
  }
477000
477000
  }
477001
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.81.3") {
477001
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.81.4") {
477002
477002
  if (process.env.USER_TYPE === "ant") {
477003
477003
  const changelog = "";
477004
477004
  if (changelog) {
@@ -477025,7 +477025,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.81.3")
477025
477025
  releaseNotes
477026
477026
  };
477027
477027
  }
477028
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.81.3") {
477028
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.81.4") {
477029
477029
  if (process.env.USER_TYPE === "ant") {
477030
477030
  const changelog = "";
477031
477031
  if (changelog) {
@@ -479930,7 +479930,7 @@ function getRecentActivitySync() {
479930
479930
  return cachedActivity;
479931
479931
  }
479932
479932
  function getLogoDisplayData() {
479933
- const version2 = process.env.DEMO_VERSION ?? "1.81.3";
479933
+ const version2 = process.env.DEMO_VERSION ?? "1.81.4";
479934
479934
  const serverUrl = getDirectConnectServerUrl();
479935
479935
  const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
479936
479936
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -480004,13 +480004,8 @@ var init_logoV2Utils = __esm(() => {
480004
480004
  });
480005
480005
 
480006
480006
  // src/components/LogoV2/URBanner.tsx
480007
- function getURWordmarkGlyphTone(glyph, row, column) {
480008
- if (glyph === "\u2588") {
480009
- return SPECULAR_GLYPHS.has(`${row}:${column}`) ? "warningShimmer" : "urShimmer";
480010
- }
480011
- if ("\u2557\u2551\u2554\u255D\u255A\u2550".includes(glyph))
480012
- return "ur";
480013
- return;
480007
+ function getURWordmarkGlyphTone(glyph, _row, _column) {
480008
+ return glyph === " " ? undefined : "ur";
480014
480009
  }
480015
480010
  function URBanner() {
480016
480011
  if (isScreenReaderMode()) {
@@ -480031,29 +480026,19 @@ function URBanner() {
480031
480026
  }, i3, false, undefined, this)),
480032
480027
  /* @__PURE__ */ jsx_dev_runtime233.jsxDEV(ThemedText, {
480033
480028
  bold: true,
480034
- children: [
480035
- /* @__PURE__ */ jsx_dev_runtime233.jsxDEV(ThemedText, {
480036
- color: "warningShimmer",
480037
- children: "\u2726"
480038
- }, undefined, false, undefined, this),
480039
- /* @__PURE__ */ jsx_dev_runtime233.jsxDEV(ThemedText, {
480040
- color: "urShimmer",
480041
- children: [
480042
- " ",
480043
- UR_WORDMARK_TAGLINE,
480044
- " "
480045
- ]
480046
- }, undefined, true, undefined, this),
480047
- /* @__PURE__ */ jsx_dev_runtime233.jsxDEV(ThemedText, {
480048
- color: "warningShimmer",
480049
- children: "\u2726"
480050
- }, undefined, false, undefined, this)
480051
- ]
480052
- }, undefined, true, undefined, this)
480029
+ children: /* @__PURE__ */ jsx_dev_runtime233.jsxDEV(ThemedText, {
480030
+ color: "ur",
480031
+ children: [
480032
+ "\u2726 ",
480033
+ UR_WORDMARK_TAGLINE,
480034
+ " \u2726"
480035
+ ]
480036
+ }, undefined, true, undefined, this)
480037
+ }, undefined, false, undefined, this)
480053
480038
  ]
480054
480039
  }, undefined, true, undefined, this);
480055
480040
  }
480056
- var jsx_dev_runtime233, UR_WORDMARK_ROWS, UR_WORDMARK_TAGLINE = "THE AUTONOMOUS AGENT", SPECULAR_GLYPHS;
480041
+ var jsx_dev_runtime233, UR_WORDMARK_ROWS, UR_WORDMARK_TAGLINE = "THE AUTONOMOUS AGENT";
480057
480042
  var init_URBanner = __esm(() => {
480058
480043
  init_ink2();
480059
480044
  init_screenReader();
@@ -480066,25 +480051,6 @@ var init_URBanner = __esm(() => {
480066
480051
  "\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D \u2588\u2588\u2551 \u2588\u2588\u2551",
480067
480052
  " \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D"
480068
480053
  ];
480069
- SPECULAR_GLYPHS = new Set([
480070
- "0:0",
480071
- "0:1",
480072
- "0:6",
480073
- "0:7",
480074
- "0:11",
480075
- "0:12",
480076
- "0:13",
480077
- "0:14",
480078
- "0:15",
480079
- "0:16",
480080
- "1:0",
480081
- "1:6",
480082
- "1:11",
480083
- "1:15",
480084
- "2:0",
480085
- "2:6",
480086
- "2:11"
480087
- ]);
480088
480054
  });
480089
480055
 
480090
480056
  // src/components/LogoV2/UrHouse.tsx
@@ -480852,7 +480818,7 @@ function LogoV2() {
480852
480818
  if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
480853
480819
  t2 = () => {
480854
480820
  const currentConfig = getGlobalConfig();
480855
- if (currentConfig.lastReleaseNotesSeen === "1.81.3") {
480821
+ if (currentConfig.lastReleaseNotesSeen === "1.81.4") {
480856
480822
  return;
480857
480823
  }
480858
480824
  saveGlobalConfig(_temp325);
@@ -481537,12 +481503,12 @@ function LogoV2() {
481537
481503
  return t41;
481538
481504
  }
481539
481505
  function _temp325(current) {
481540
- if (current.lastReleaseNotesSeen === "1.81.3") {
481506
+ if (current.lastReleaseNotesSeen === "1.81.4") {
481541
481507
  return current;
481542
481508
  }
481543
481509
  return {
481544
481510
  ...current,
481545
- lastReleaseNotesSeen: "1.81.3"
481511
+ lastReleaseNotesSeen: "1.81.4"
481546
481512
  };
481547
481513
  }
481548
481514
  function _temp241(s_0) {
@@ -497492,7 +497458,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
497492
497458
  if (spec.name !== specName) {
497493
497459
  throw new Error("Agentic CI workflow spec name does not match");
497494
497460
  }
497495
- const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.81.3" : "1.81.3");
497461
+ const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.81.4" : "1.81.4");
497496
497462
  if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
497497
497463
  throw new Error("invalid ur-agent package version");
497498
497464
  }
@@ -498485,7 +498451,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
498485
498451
  path: ".github/workflows/ur.yml",
498486
498452
  root: "project",
498487
498453
  content: compileAgenticCiWorkflow("default", {
498488
- packageVersion: typeof MACRO !== "undefined" ? "1.81.3" : "1.81.3"
498454
+ packageVersion: typeof MACRO !== "undefined" ? "1.81.4" : "1.81.4"
498489
498455
  })
498490
498456
  },
498491
498457
  {
@@ -498548,7 +498514,7 @@ function value(tokens, flag) {
498548
498514
  return index2 >= 0 ? tokens[index2 + 1] : undefined;
498549
498515
  }
498550
498516
  function cliVersion() {
498551
- return typeof MACRO !== "undefined" ? "1.81.3" : "1.81.3";
498517
+ return typeof MACRO !== "undefined" ? "1.81.4" : "1.81.4";
498552
498518
  }
498553
498519
  function workflowPath(cwd2) {
498554
498520
  return join168(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
@@ -504404,7 +504370,7 @@ function createAcpStdioApp(deps) {
504404
504370
  }
504405
504371
  },
504406
504372
  authMethods: [],
504407
- agentInfo: { name: "UR-Nexus", version: "1.81.3" }
504373
+ agentInfo: { name: "UR-Nexus", version: "1.81.4" }
504408
504374
  })).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
504409
504375
  const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
504410
504376
  await runtime2.announce({
@@ -504501,7 +504467,7 @@ function createAcpStdioAgent(deps) {
504501
504467
  }
504502
504468
  },
504503
504469
  authMethods: [],
504504
- agentInfo: { name: "UR-Nexus", version: "1.81.3" }
504470
+ agentInfo: { name: "UR-Nexus", version: "1.81.4" }
504505
504471
  });
504506
504472
  return;
504507
504473
  case "authenticate":
@@ -715753,7 +715719,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
715753
715719
  smapsRollup,
715754
715720
  platform: process.platform,
715755
715721
  nodeVersion: process.version,
715756
- ccVersion: "1.81.3"
715722
+ ccVersion: "1.81.4"
715757
715723
  };
715758
715724
  }
715759
715725
  async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
@@ -716342,7 +716308,7 @@ var init_bridge_kick = __esm(() => {
716342
716308
  var call154 = async () => {
716343
716309
  return {
716344
716310
  type: "text",
716345
- value: "1.81.3"
716311
+ value: "1.81.4"
716346
716312
  };
716347
716313
  }, version2, version_default;
716348
716314
  var init_version = __esm(() => {
@@ -727701,7 +727667,7 @@ function generateHtmlReport(data, insights) {
727701
727667
  </html>`;
727702
727668
  }
727703
727669
  function buildExportData(data, insights, facets, remoteStats) {
727704
- const version3 = typeof MACRO !== "undefined" ? "1.81.3" : "unknown";
727670
+ const version3 = typeof MACRO !== "undefined" ? "1.81.4" : "unknown";
727705
727671
  const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
727706
727672
  const facets_summary = {
727707
727673
  total: facets.size,
@@ -732014,7 +731980,7 @@ var init_sessionStorage = __esm(() => {
732014
731980
  init_settings2();
732015
731981
  init_slowOperations();
732016
731982
  init_uuid();
732017
- VERSION7 = typeof MACRO !== "undefined" ? "1.81.3" : "unknown";
731983
+ VERSION7 = typeof MACRO !== "undefined" ? "1.81.4" : "unknown";
732018
731984
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
732019
731985
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
732020
731986
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -733229,7 +733195,7 @@ var init_filesystem = __esm(() => {
733229
733195
  });
733230
733196
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
733231
733197
  const nonce = randomBytes24(16).toString("hex");
733232
- return join243(getURTempDir(), "bundled-skills", "1.81.3", nonce);
733198
+ return join243(getURTempDir(), "bundled-skills", "1.81.4", nonce);
733233
733199
  });
733234
733200
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
733235
733201
  });
@@ -739629,7 +739595,7 @@ function computeFingerprint(messageText2, version3) {
739629
739595
  }
739630
739596
  function computeFingerprintFromMessages(messages) {
739631
739597
  const firstMessageText = extractFirstMessageText(messages);
739632
- return computeFingerprint(firstMessageText, "1.81.3");
739598
+ return computeFingerprint(firstMessageText, "1.81.4");
739633
739599
  }
739634
739600
  var FINGERPRINT_SALT = "59cf53e54c78";
739635
739601
  var init_fingerprint = () => {};
@@ -741564,7 +741530,7 @@ async function sideQuery(opts) {
741564
741530
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
741565
741531
  }
741566
741532
  const messageText2 = extractFirstUserMessageText(messages);
741567
- const fingerprint2 = computeFingerprint(messageText2, "1.81.3");
741533
+ const fingerprint2 = computeFingerprint(messageText2, "1.81.4");
741568
741534
  const attributionHeader = getAttributionHeader(fingerprint2);
741569
741535
  const systemBlocks = [
741570
741536
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -746398,7 +746364,7 @@ function buildSystemInitMessage(inputs) {
746398
746364
  slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
746399
746365
  apiKeySource: getURHQApiKeyWithSource().source,
746400
746366
  betas: getSdkBetas(),
746401
- ur_version: "1.81.3",
746367
+ ur_version: "1.81.4",
746402
746368
  output_style: outputStyle,
746403
746369
  agents: inputs.agents.map((agent2) => agent2.agentType),
746404
746370
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
@@ -760234,7 +760200,7 @@ var init_useVoiceEnabled = __esm(() => {
760234
760200
  function getSemverPart(version3) {
760235
760201
  return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
760236
760202
  }
760237
- function useUpdateNotification(updatedVersion, initialVersion = "1.81.3") {
760203
+ function useUpdateNotification(updatedVersion, initialVersion = "1.81.4") {
760238
760204
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react225.useState(() => getSemverPart(initialVersion));
760239
760205
  if (!updatedVersion) {
760240
760206
  return null;
@@ -760283,7 +760249,7 @@ function AutoUpdater({
760283
760249
  return;
760284
760250
  }
760285
760251
  if (false) {}
760286
- const currentVersion = "1.81.3";
760252
+ const currentVersion = "1.81.4";
760287
760253
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
760288
760254
  let latestVersion = await getLatestVersion(channel);
760289
760255
  const isDisabled = isAutoUpdaterDisabled();
@@ -760512,12 +760478,12 @@ function NativeAutoUpdater({
760512
760478
  logEvent("tengu_native_auto_updater_start", {});
760513
760479
  try {
760514
760480
  const maxVersion = await getMaxVersion();
760515
- if (maxVersion && gt("1.81.3", maxVersion)) {
760481
+ if (maxVersion && gt("1.81.4", maxVersion)) {
760516
760482
  const msg = await getMaxVersionMessage();
760517
760483
  setMaxVersionIssue(msg ?? "affects your version");
760518
760484
  }
760519
760485
  const result = await installLatest(channel);
760520
- const currentVersion = "1.81.3";
760486
+ const currentVersion = "1.81.4";
760521
760487
  const latencyMs = Date.now() - startTime;
760522
760488
  if (result.lockFailed) {
760523
760489
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -760654,17 +760620,17 @@ function PackageManagerAutoUpdater(t0) {
760654
760620
  const maxVersion = await getMaxVersion();
760655
760621
  if (maxVersion && latest && gt(latest, maxVersion)) {
760656
760622
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
760657
- if (gte("1.81.3", maxVersion)) {
760658
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.81.3"} is already at or above maxVersion ${maxVersion}, skipping update`);
760623
+ if (gte("1.81.4", maxVersion)) {
760624
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.81.4"} is already at or above maxVersion ${maxVersion}, skipping update`);
760659
760625
  setUpdateAvailable(false);
760660
760626
  return;
760661
760627
  }
760662
760628
  latest = maxVersion;
760663
760629
  }
760664
- const hasUpdate = latest && !gte("1.81.3", latest) && !shouldSkipVersion(latest);
760630
+ const hasUpdate = latest && !gte("1.81.4", latest) && !shouldSkipVersion(latest);
760665
760631
  setUpdateAvailable(!!hasUpdate);
760666
760632
  if (hasUpdate) {
760667
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.81.3"} -> ${latest}`);
760633
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.81.4"} -> ${latest}`);
760668
760634
  }
760669
760635
  };
760670
760636
  $2[0] = t1;
@@ -760698,7 +760664,7 @@ function PackageManagerAutoUpdater(t0) {
760698
760664
  wrap: "truncate",
760699
760665
  children: [
760700
760666
  "currentVersion: ",
760701
- "1.81.3"
760667
+ "1.81.4"
760702
760668
  ]
760703
760669
  }, undefined, true, undefined, this);
760704
760670
  $2[3] = verbose;
@@ -771551,7 +771517,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
771551
771517
  project_dir: getOriginalCwd(),
771552
771518
  added_dirs: addedDirs
771553
771519
  },
771554
- version: "1.81.3",
771520
+ version: "1.81.4",
771555
771521
  output_style: {
771556
771522
  name: outputStyleName
771557
771523
  },
@@ -771686,7 +771652,7 @@ function StatusLineInner({
771686
771652
  const attention = customStatusError ?? taskAttention;
771687
771653
  const terminalSize = React133.useContext(TerminalSizeContext);
771688
771654
  const defaultStatusLineText = buildDefaultStatusBar({
771689
- version: "1.81.3",
771655
+ version: "1.81.4",
771690
771656
  providerLabel: providerRuntime.providerLabel,
771691
771657
  authMode: providerRuntime.authLabel,
771692
771658
  model: renderModelName(mainLoopModel) || providerRuntime.model || "",
@@ -783942,7 +783908,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
783942
783908
  } catch {}
783943
783909
  const data = {
783944
783910
  trigger: trigger2,
783945
- version: "1.81.3",
783911
+ version: "1.81.4",
783946
783912
  platform: process.platform,
783947
783913
  transcript,
783948
783914
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -796311,7 +796277,7 @@ function WelcomeV2() {
796311
796277
  dimColor: true,
796312
796278
  children: [
796313
796279
  "v",
796314
- "1.81.3"
796280
+ "1.81.4"
796315
796281
  ]
796316
796282
  }, undefined, true, undefined, this)
796317
796283
  ]
@@ -797571,7 +797537,7 @@ function completeOnboarding() {
797571
797537
  saveGlobalConfig((current) => ({
797572
797538
  ...current,
797573
797539
  hasCompletedOnboarding: true,
797574
- lastOnboardingVersion: "1.81.3"
797540
+ lastOnboardingVersion: "1.81.4"
797575
797541
  }));
797576
797542
  }
797577
797543
  function showDialog(root2, renderer) {
@@ -802717,7 +802683,7 @@ function appendToLog(path28, message) {
802717
802683
  cwd: getFsImplementation().cwd(),
802718
802684
  userType: process.env.USER_TYPE,
802719
802685
  sessionId: getSessionId(),
802720
- version: "1.81.3"
802686
+ version: "1.81.4"
802721
802687
  };
802722
802688
  getLogWriter(path28).write(messageWithTimestamp);
802723
802689
  }
@@ -806881,8 +806847,8 @@ async function getEnvLessBridgeConfig() {
806881
806847
  }
806882
806848
  async function checkEnvLessBridgeMinVersion() {
806883
806849
  const cfg = await getEnvLessBridgeConfig();
806884
- if (cfg.min_version && lt("1.81.3", cfg.min_version)) {
806885
- return `Your version of UR (${"1.81.3"}) is too old for Remote Control.
806850
+ if (cfg.min_version && lt("1.81.4", cfg.min_version)) {
806851
+ return `Your version of UR (${"1.81.4"}) is too old for Remote Control.
806886
806852
  Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
806887
806853
  }
806888
806854
  return null;
@@ -807356,7 +807322,7 @@ async function initBridgeCore(params) {
807356
807322
  const rawApi = createBridgeApiClient({
807357
807323
  baseUrl,
807358
807324
  getAccessToken,
807359
- runnerVersion: "1.81.3",
807325
+ runnerVersion: "1.81.4",
807360
807326
  onDebug: logForDebugging,
807361
807327
  onAuth401,
807362
807328
  getTrustedDeviceToken
@@ -816829,7 +816795,7 @@ function getAgUiCapabilities() {
816829
816795
  name: "UR-Nexus",
816830
816796
  type: "ur-nexus",
816831
816797
  description: "Provider-flexible, local-first autonomous engineering workflow agent.",
816832
- version: "1.81.3",
816798
+ version: "1.81.4",
816833
816799
  provider: "UR",
816834
816800
  documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
816835
816801
  },
@@ -818056,7 +818022,7 @@ function createMCPServer(cwd4, debug2, verbose) {
818056
818022
  };
818057
818023
  const server2 = new Server({
818058
818024
  name: "ur-nexus",
818059
- version: "1.81.3"
818025
+ version: "1.81.4"
818060
818026
  }, {
818061
818027
  capabilities: {
818062
818028
  tools: {}
@@ -819260,7 +819226,7 @@ function thrownResponse(error40) {
819260
819226
  }
819261
819227
  async function createUrMcp2026Runtime(options5) {
819262
819228
  const server2 = createMCPServer(options5.cwd, options5.debug === true, options5.verbose === true);
819263
- const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.81.3" }, { capabilities: {} });
819229
+ const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.81.4" }, { capabilities: {} });
819264
819230
  const [clientTransport, serverTransport] = createLinkedTransportPair();
819265
819231
  try {
819266
819232
  await server2.connect(serverTransport);
@@ -819271,7 +819237,7 @@ async function createUrMcp2026Runtime(options5) {
819271
819237
  }
819272
819238
  const runtime2 = new Mcp2026Runtime({
819273
819239
  cwd: options5.cwd,
819274
- version: "1.81.3",
819240
+ version: "1.81.4",
819275
819241
  backend: {
819276
819242
  listTools: async () => {
819277
819243
  const listed = await client2.listTools();
@@ -822006,7 +821972,7 @@ async function update() {
822006
821972
  logEvent("tengu_update_check", {});
822007
821973
  const diagnostic2 = await getDoctorDiagnostic();
822008
821974
  const result = await checkUpgradeStatus({
822009
- currentVersion: "1.81.3",
821975
+ currentVersion: "1.81.4",
822010
821976
  packageName: UR_AGENT_PACKAGE_NAME,
822011
821977
  installationType: diagnostic2.installationType,
822012
821978
  latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
@@ -823334,7 +823300,7 @@ ${customInstructions}` : customInstructions;
823334
823300
  }
823335
823301
  }
823336
823302
  logForDiagnosticsNoPII("info", "started", {
823337
- version: "1.81.3",
823303
+ version: "1.81.4",
823338
823304
  is_native_binary: isInBundledMode()
823339
823305
  });
823340
823306
  registerCleanup(async () => {
@@ -824121,7 +824087,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
824121
824087
  pendingHookMessages
824122
824088
  }, renderAndRun);
824123
824089
  }
824124
- }).version("1.81.3 (UR-Nexus)", "-v, --version", "Output the version number");
824090
+ }).version("1.81.4 (UR-Nexus)", "-v, --version", "Output the version number");
824125
824091
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
824126
824092
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
824127
824093
  if (canUserConfigureAdvisor()) {
@@ -825248,7 +825214,7 @@ if (false) {}
825248
825214
  async function main2() {
825249
825215
  const args = process.argv.slice(2);
825250
825216
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
825251
- console.log(`${"1.81.3"} (UR-Nexus)`);
825217
+ console.log(`${"1.81.4"} (UR-Nexus)`);
825252
825218
  return;
825253
825219
  }
825254
825220
  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.81.3 (UR-Nexus)"
22
+ # expected for this release: "1.81.4 (UR-Nexus)"
23
23
  ```
24
24
 
25
25
  ### 0.0 Redteam mode and Reverse Skills (1.81.0)
@@ -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.81.3</p>
48
+ <p class="eyebrow">Version 1.81.4</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.81.3"
10
+ version = "1.81.4"
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.81.3",
5
+ "version": "1.81.4",
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.81.3",
3
+ "version": "1.81.4",
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",