ur-agent 1.55.0 → 1.56.1
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,43 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.56.1
|
|
4
|
+
|
|
5
|
+
- Documented the 1.52.0–1.56.0 features, which had reached `technical/03` as
|
|
6
|
+
command rows but nowhere else. Doc 09 now covers the fan-out limits and how
|
|
7
|
+
to run several workers at once; doc 12 covers the prompt-injection module and
|
|
8
|
+
deny-default Seatbelt profiles; doc 05 covers Ollama Cloud authentication,
|
|
9
|
+
base-URL precedence, and the narrowed `APIProvider` with its named
|
|
10
|
+
predicates; doc 06 covers `agents.maxDepth`/`maxConcurrent`, permission
|
|
11
|
+
profiles, and the provider environment variables.
|
|
12
|
+
|
|
13
|
+
## 1.56.0
|
|
14
|
+
|
|
15
|
+
- Added a subagent fan-out governor. Agents could spawn agents with no depth or
|
|
16
|
+
concurrency bound, and `/crew`, `/arena`, `/bg fanout` and `/pattern` all
|
|
17
|
+
spawn several at once, so a single prompt could expand into an unbounded tree
|
|
18
|
+
until the machine wedged. Spawning is now refused past a nesting depth of 3
|
|
19
|
+
or 20 concurrent agents, checked before any work starts so a refusal is free.
|
|
20
|
+
The slot is released in the existing `finally`, so an aborted or crashed
|
|
21
|
+
agent cannot strand the budget.
|
|
22
|
+
- Limits are configurable through `agents.maxDepth` and `agents.maxConcurrent`,
|
|
23
|
+
clamped to hard ceilings of 10 and 100. A settings file cannot disable the
|
|
24
|
+
governor, and out-of-range or non-numeric values clamp rather than switching
|
|
25
|
+
it off. Refusal messages name the limit that fired and the setting that
|
|
26
|
+
raises it.
|
|
27
|
+
- Added `src/security/promptInjection.ts`: detection of injection phrasing
|
|
28
|
+
(instruction override, role reassignment, exfiltration, tool coercion, forged
|
|
29
|
+
system turns, secrecy demands, boundary forgery), removal of zero-width and
|
|
30
|
+
bidirectional characters used to hide payloads from human review, a
|
|
31
|
+
nonce-bound content boundary that untrusted text cannot close because it
|
|
32
|
+
cannot predict the nonce, and canary tokens that prove whether a boundary was
|
|
33
|
+
crossed. Framed as detection and privilege separation rather than filtering,
|
|
34
|
+
because no reliable injection classifier exists.
|
|
35
|
+
- Added `denyByDefault` to the Seatbelt profile builder. Without a read
|
|
36
|
+
allowlist the profile previously fell back to `(allow default)` plus targeted
|
|
37
|
+
denials — a blocklist rather than a sandbox, and the shape behind the 2026
|
|
38
|
+
Seatbelt escape write-ups. Opt-in for back-compatibility, since it can break
|
|
39
|
+
agents that read outside the standard runtime roots.
|
|
40
|
+
|
|
3
41
|
## 1.55.0
|
|
4
42
|
|
|
5
43
|
- Narrowed `APIProvider` to the two values `getAPIProvider()` can actually
|
package/dist/cli.js
CHANGED
|
@@ -75097,7 +75097,7 @@ var init_auth = __esm(() => {
|
|
|
75097
75097
|
|
|
75098
75098
|
// src/utils/userAgent.ts
|
|
75099
75099
|
function getURCodeUserAgent() {
|
|
75100
|
-
return `ur/${"1.
|
|
75100
|
+
return `ur/${"1.56.1"}`;
|
|
75101
75101
|
}
|
|
75102
75102
|
|
|
75103
75103
|
// src/utils/workloadContext.ts
|
|
@@ -75119,7 +75119,7 @@ function getUserAgent() {
|
|
|
75119
75119
|
const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
|
|
75120
75120
|
const workload = getWorkload();
|
|
75121
75121
|
const workloadSuffix = workload ? `, workload/${workload}` : "";
|
|
75122
|
-
return `ur-cli/${"1.
|
|
75122
|
+
return `ur-cli/${"1.56.1"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
|
|
75123
75123
|
}
|
|
75124
75124
|
function getMCPUserAgent() {
|
|
75125
75125
|
const parts = [];
|
|
@@ -75133,7 +75133,7 @@ function getMCPUserAgent() {
|
|
|
75133
75133
|
parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
|
|
75134
75134
|
}
|
|
75135
75135
|
const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
|
|
75136
|
-
return `ur/${"1.
|
|
75136
|
+
return `ur/${"1.56.1"}${suffix}`;
|
|
75137
75137
|
}
|
|
75138
75138
|
function getWebFetchUserAgent() {
|
|
75139
75139
|
return `UR-User (${getURCodeUserAgent()})`;
|
|
@@ -75271,7 +75271,7 @@ var init_user = __esm(() => {
|
|
|
75271
75271
|
deviceId,
|
|
75272
75272
|
sessionId: getSessionId(),
|
|
75273
75273
|
email: getEmail(),
|
|
75274
|
-
appVersion: "1.
|
|
75274
|
+
appVersion: "1.56.1",
|
|
75275
75275
|
platform: getHostPlatformForAnalytics(),
|
|
75276
75276
|
organizationUuid,
|
|
75277
75277
|
accountUuid,
|
|
@@ -83471,7 +83471,7 @@ var init_metadata = __esm(() => {
|
|
|
83471
83471
|
COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
|
|
83472
83472
|
WHITESPACE_REGEX = /\s+/;
|
|
83473
83473
|
getVersionBase = memoize_default(() => {
|
|
83474
|
-
const match = "1.
|
|
83474
|
+
const match = "1.56.1".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
|
|
83475
83475
|
return match ? match[0] : undefined;
|
|
83476
83476
|
});
|
|
83477
83477
|
buildEnvContext = memoize_default(async () => {
|
|
@@ -83511,7 +83511,7 @@ var init_metadata = __esm(() => {
|
|
|
83511
83511
|
isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
|
|
83512
83512
|
isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
|
|
83513
83513
|
isURAiAuth: isURAISubscriber(),
|
|
83514
|
-
version: "1.
|
|
83514
|
+
version: "1.56.1",
|
|
83515
83515
|
versionBase: getVersionBase(),
|
|
83516
83516
|
buildTime: "",
|
|
83517
83517
|
deploymentEnvironment: env2.detectDeploymentEnvironment(),
|
|
@@ -84181,7 +84181,7 @@ function initialize1PEventLogging() {
|
|
|
84181
84181
|
const platform2 = getPlatform();
|
|
84182
84182
|
const attributes = {
|
|
84183
84183
|
[import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
|
|
84184
|
-
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.
|
|
84184
|
+
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.56.1"
|
|
84185
84185
|
};
|
|
84186
84186
|
if (platform2 === "wsl") {
|
|
84187
84187
|
const wslVersion = getWslVersion();
|
|
@@ -84209,7 +84209,7 @@ function initialize1PEventLogging() {
|
|
|
84209
84209
|
})
|
|
84210
84210
|
]
|
|
84211
84211
|
});
|
|
84212
|
-
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.
|
|
84212
|
+
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.56.1");
|
|
84213
84213
|
}
|
|
84214
84214
|
async function reinitialize1PEventLoggingIfConfigChanged() {
|
|
84215
84215
|
if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
|
|
@@ -86723,6 +86723,10 @@ var init_types2 = __esm(() => {
|
|
|
86723
86723
|
includeCoAuthoredBy: exports_external.boolean().optional().describe("Deprecated: Use attribution instead. " + "Whether to include UR's co-authored by attribution in commits and PRs (defaults to true)"),
|
|
86724
86724
|
includeGitInstructions: exports_external.boolean().optional().describe("Include built-in commit and PR workflow instructions in UR's system prompt (default: true)"),
|
|
86725
86725
|
permissions: PermissionsSchema().optional().describe("Tool usage permissions configuration"),
|
|
86726
|
+
agents: exports_external.object({
|
|
86727
|
+
maxDepth: exports_external.number().optional().describe("Maximum subagent nesting depth (default 3, hard ceiling 10)"),
|
|
86728
|
+
maxConcurrent: exports_external.number().optional().describe("Maximum subagents running at once (default 20, hard ceiling 100)")
|
|
86729
|
+
}).optional().describe("Subagent fan-out limits"),
|
|
86726
86730
|
model: exports_external.string().optional().describe("Override the default model used by UR"),
|
|
86727
86731
|
provider: exports_external.object({
|
|
86728
86732
|
active: exports_external.enum(PROVIDER_SETTING_IDS).optional().describe("Active legal model provider adapter"),
|
|
@@ -94035,7 +94039,7 @@ function formatAgentTrendReport(report = buildAgentTrendReport()) {
|
|
|
94035
94039
|
function formatA2AAgentCard(options = {}, pretty = true) {
|
|
94036
94040
|
return JSON.stringify(buildA2AAgentCard(options), null, pretty ? 2 : 0);
|
|
94037
94041
|
}
|
|
94038
|
-
var urVersion = "1.
|
|
94042
|
+
var urVersion = "1.56.1", researchSnapshotDate = "2026-07-15", coverage, priorityRoadmap;
|
|
94039
94043
|
var init_trends = __esm(() => {
|
|
94040
94044
|
init_a2aCardSignature();
|
|
94041
94045
|
coverage = [
|
|
@@ -96836,7 +96840,7 @@ function getAttributionHeader(fingerprint) {
|
|
|
96836
96840
|
if (!isAttributionHeaderEnabled()) {
|
|
96837
96841
|
return "";
|
|
96838
96842
|
}
|
|
96839
|
-
const version2 = `${"1.
|
|
96843
|
+
const version2 = `${"1.56.1"}.${fingerprint}`;
|
|
96840
96844
|
const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
|
|
96841
96845
|
const cch = "";
|
|
96842
96846
|
const workload = getWorkload();
|
|
@@ -137758,7 +137762,7 @@ function buildSeatbeltProfile(root2, options) {
|
|
|
137758
137762
|
const denyReadRules = normalizedPaths(root2, options.denyRead).map((path10) => ` (subpath "${sbplString(path10)}")`).join(`
|
|
137759
137763
|
`);
|
|
137760
137764
|
const allowRead = normalizedPaths(root2, options.allowRead);
|
|
137761
|
-
const restrictReads = allowRead.length > 0;
|
|
137765
|
+
const restrictReads = allowRead.length > 0 || options.denyByDefault === true;
|
|
137762
137766
|
if (restrictReads) {
|
|
137763
137767
|
const runtimeReadRoots = normalizedPaths(root2, [
|
|
137764
137768
|
"/System",
|
|
@@ -154425,7 +154429,7 @@ var init_projectSafety = __esm(() => {
|
|
|
154425
154429
|
function getInstruments() {
|
|
154426
154430
|
if (instruments)
|
|
154427
154431
|
return instruments;
|
|
154428
|
-
const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.
|
|
154432
|
+
const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.56.1");
|
|
154429
154433
|
instruments = {
|
|
154430
154434
|
operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
|
|
154431
154435
|
description: "GenAI operation duration.",
|
|
@@ -154523,7 +154527,7 @@ function genAiAgentAttributes() {
|
|
|
154523
154527
|
"gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
|
|
154524
154528
|
"gen_ai.provider.name": "ur",
|
|
154525
154529
|
"gen_ai.agent.name": "UR-Nexus",
|
|
154526
|
-
"gen_ai.agent.version": "1.
|
|
154530
|
+
"gen_ai.agent.version": "1.56.1"
|
|
154527
154531
|
};
|
|
154528
154532
|
}
|
|
154529
154533
|
function genAiWorkflowAttributes(workflowName) {
|
|
@@ -154539,7 +154543,7 @@ function genAiWorkflowAttributes(workflowName) {
|
|
|
154539
154543
|
function startGenAiWorkflowSpan(workflowName) {
|
|
154540
154544
|
const attributes = genAiWorkflowAttributes(workflowName);
|
|
154541
154545
|
const name = typeof attributes["gen_ai.workflow.name"] === "string" ? `invoke_workflow ${attributes["gen_ai.workflow.name"]}` : GEN_AI_OPERATION_INVOKE_WORKFLOW;
|
|
154542
|
-
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.
|
|
154546
|
+
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.56.1").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
|
|
154543
154547
|
}
|
|
154544
154548
|
function endGenAiWorkflowSpan(span, options2 = {}) {
|
|
154545
154549
|
try {
|
|
@@ -154577,7 +154581,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
|
|
|
154577
154581
|
if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
|
|
154578
154582
|
attributes["gen_ai.memory.record.count"] = options2.recordCount;
|
|
154579
154583
|
}
|
|
154580
|
-
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.
|
|
154584
|
+
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.56.1").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
|
|
154581
154585
|
}
|
|
154582
154586
|
function endGenAiMemorySpan(span, options2 = {}) {
|
|
154583
154587
|
try {
|
|
@@ -206096,7 +206100,7 @@ function getTelemetryAttributes() {
|
|
|
206096
206100
|
attributes["session.id"] = sessionId;
|
|
206097
206101
|
}
|
|
206098
206102
|
if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
|
|
206099
|
-
attributes["app.version"] = "1.
|
|
206103
|
+
attributes["app.version"] = "1.56.1";
|
|
206100
206104
|
}
|
|
206101
206105
|
const oauthAccount = getOauthAccountInfo();
|
|
206102
206106
|
if (oauthAccount) {
|
|
@@ -222630,6 +222634,73 @@ var init_coordinatorMode = __esm(() => {
|
|
|
222630
222634
|
]);
|
|
222631
222635
|
});
|
|
222632
222636
|
|
|
222637
|
+
// src/tools/AgentTool/fanOutLimits.ts
|
|
222638
|
+
function depthFor(parentId) {
|
|
222639
|
+
if (!parentId)
|
|
222640
|
+
return 1;
|
|
222641
|
+
const parent = active.get(parentId);
|
|
222642
|
+
return parent ? parent.depth + 1 : 1;
|
|
222643
|
+
}
|
|
222644
|
+
function canSpawnAgent(parentId, limits) {
|
|
222645
|
+
const depth = depthFor(parentId);
|
|
222646
|
+
if (depth > limits.maxDepth) {
|
|
222647
|
+
return {
|
|
222648
|
+
allowed: false,
|
|
222649
|
+
depth,
|
|
222650
|
+
reason: `Subagent nesting limit reached (depth ${depth} > ${limits.maxDepth}). ` + "Raise agents.maxDepth in settings if this task genuinely needs deeper delegation."
|
|
222651
|
+
};
|
|
222652
|
+
}
|
|
222653
|
+
if (active.size >= limits.maxConcurrent) {
|
|
222654
|
+
return {
|
|
222655
|
+
allowed: false,
|
|
222656
|
+
depth,
|
|
222657
|
+
reason: `Concurrent subagent limit reached (${active.size}/${limits.maxConcurrent} running). ` + "Wait for running agents to finish, or raise agents.maxConcurrent in settings."
|
|
222658
|
+
};
|
|
222659
|
+
}
|
|
222660
|
+
return { allowed: true, depth };
|
|
222661
|
+
}
|
|
222662
|
+
function registerAgent(agentId, parentId, depth, now5 = Date.now) {
|
|
222663
|
+
active.set(agentId, {
|
|
222664
|
+
agentId,
|
|
222665
|
+
parentId: parentId ?? "session",
|
|
222666
|
+
depth,
|
|
222667
|
+
startedAt: now5()
|
|
222668
|
+
});
|
|
222669
|
+
let released = false;
|
|
222670
|
+
return () => {
|
|
222671
|
+
if (released)
|
|
222672
|
+
return;
|
|
222673
|
+
released = true;
|
|
222674
|
+
active.delete(agentId);
|
|
222675
|
+
};
|
|
222676
|
+
}
|
|
222677
|
+
var DEFAULT_MAX_AGENT_DEPTH = 3, DEFAULT_MAX_CONCURRENT_AGENTS = 20, active;
|
|
222678
|
+
var init_fanOutLimits = __esm(() => {
|
|
222679
|
+
active = new Map;
|
|
222680
|
+
});
|
|
222681
|
+
|
|
222682
|
+
// src/tools/AgentTool/fanOutSettings.ts
|
|
222683
|
+
function clamp2(value, fallback, hardMax) {
|
|
222684
|
+
if (typeof value !== "number" || !Number.isFinite(value))
|
|
222685
|
+
return fallback;
|
|
222686
|
+
const rounded = Math.floor(value);
|
|
222687
|
+
if (rounded < 1)
|
|
222688
|
+
return 1;
|
|
222689
|
+
return Math.min(rounded, hardMax);
|
|
222690
|
+
}
|
|
222691
|
+
function resolveFanOutLimits(settings = getInitialSettings()) {
|
|
222692
|
+
const agents = settings.agents ?? {};
|
|
222693
|
+
return {
|
|
222694
|
+
maxDepth: clamp2(agents.maxDepth, DEFAULT_MAX_AGENT_DEPTH, HARD_MAX_DEPTH),
|
|
222695
|
+
maxConcurrent: clamp2(agents.maxConcurrent, DEFAULT_MAX_CONCURRENT_AGENTS, HARD_MAX_CONCURRENT)
|
|
222696
|
+
};
|
|
222697
|
+
}
|
|
222698
|
+
var HARD_MAX_DEPTH = 10, HARD_MAX_CONCURRENT = 100;
|
|
222699
|
+
var init_fanOutSettings = __esm(() => {
|
|
222700
|
+
init_settings2();
|
|
222701
|
+
init_fanOutLimits();
|
|
222702
|
+
});
|
|
222703
|
+
|
|
222633
222704
|
// node_modules/zod/v3/helpers/util.js
|
|
222634
222705
|
var util4, objectUtil, ZodParsedType, getParsedType2 = (data) => {
|
|
222635
222706
|
const t = typeof data;
|
|
@@ -241596,7 +241667,7 @@ function getInstallationEnv() {
|
|
|
241596
241667
|
return;
|
|
241597
241668
|
}
|
|
241598
241669
|
function getURCodeVersion() {
|
|
241599
|
-
return "1.
|
|
241670
|
+
return "1.56.1";
|
|
241600
241671
|
}
|
|
241601
241672
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
241602
241673
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -243532,7 +243603,7 @@ var init_computerUseCompat = __esm(() => {
|
|
|
243532
243603
|
function useDeclaredCursor({
|
|
243533
243604
|
line,
|
|
243534
243605
|
column,
|
|
243535
|
-
active
|
|
243606
|
+
active: active2
|
|
243536
243607
|
}) {
|
|
243537
243608
|
const setCursorDeclaration = import_react41.useContext(CursorDeclarationContext_default);
|
|
243538
243609
|
const nodeRef = import_react41.useRef(null);
|
|
@@ -243541,7 +243612,7 @@ function useDeclaredCursor({
|
|
|
243541
243612
|
}, []);
|
|
243542
243613
|
import_react41.useLayoutEffect(() => {
|
|
243543
243614
|
const node = nodeRef.current;
|
|
243544
|
-
if (
|
|
243615
|
+
if (active2 && node) {
|
|
243545
243616
|
setCursorDeclaration({ relativeX: column, relativeY: line, node });
|
|
243546
243617
|
} else {
|
|
243547
243618
|
setCursorDeclaration(null, node);
|
|
@@ -248927,7 +248998,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
248927
248998
|
const client2 = new Client({
|
|
248928
248999
|
name: "ur",
|
|
248929
249000
|
title: "UR",
|
|
248930
|
-
version: "1.
|
|
249001
|
+
version: "1.56.1",
|
|
248931
249002
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
248932
249003
|
websiteUrl: PRODUCT_URL
|
|
248933
249004
|
}, {
|
|
@@ -249287,7 +249358,7 @@ var init_client5 = __esm(() => {
|
|
|
249287
249358
|
const client2 = new Client({
|
|
249288
249359
|
name: "ur",
|
|
249289
249360
|
title: "UR",
|
|
249290
|
-
version: "1.
|
|
249361
|
+
version: "1.56.1",
|
|
249291
249362
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
249292
249363
|
websiteUrl: PRODUCT_URL
|
|
249293
249364
|
}, {
|
|
@@ -250508,7 +250579,7 @@ function emitProcessMetadata(agentInfo) {
|
|
|
250508
250579
|
function isPerfettoTracingEnabled() {
|
|
250509
250580
|
return isEnabled;
|
|
250510
250581
|
}
|
|
250511
|
-
function
|
|
250582
|
+
function registerAgent2(agentId, agentName, parentAgentId) {
|
|
250512
250583
|
if (!isEnabled)
|
|
250513
250584
|
return;
|
|
250514
250585
|
const info = {
|
|
@@ -258169,8 +258240,8 @@ class DeltaMetricProcessor {
|
|
|
258169
258240
|
}
|
|
258170
258241
|
}
|
|
258171
258242
|
if (this._activeCollectionStorage.has(attributes, hashCode)) {
|
|
258172
|
-
const
|
|
258173
|
-
delta = this._aggregator.merge(
|
|
258243
|
+
const active2 = this._activeCollectionStorage.get(attributes, hashCode);
|
|
258244
|
+
delta = this._aggregator.merge(active2, delta);
|
|
258174
258245
|
}
|
|
258175
258246
|
this._cumulativeMemoStorage.set(attributes, accumulation, hashCode);
|
|
258176
258247
|
this._activeCollectionStorage.set(attributes, delta, hashCode);
|
|
@@ -261888,7 +261959,7 @@ async function createRuntime() {
|
|
|
261888
261959
|
bootstrapTelemetry();
|
|
261889
261960
|
const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
|
|
261890
261961
|
[import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur-agent",
|
|
261891
|
-
[import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.
|
|
261962
|
+
[import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.56.1"
|
|
261892
261963
|
}));
|
|
261893
261964
|
const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
|
|
261894
261965
|
resource,
|
|
@@ -261921,11 +261992,11 @@ async function createRuntime() {
|
|
|
261921
261992
|
setMeterProvider(meterProvider);
|
|
261922
261993
|
setLoggerProvider(loggerProvider);
|
|
261923
261994
|
if (meterProvider) {
|
|
261924
|
-
const meter = meterProvider.getMeter("ur-agent", "1.
|
|
261995
|
+
const meter = meterProvider.getMeter("ur-agent", "1.56.1");
|
|
261925
261996
|
setMeter(meter, (name, options2) => meter.createCounter(name, options2));
|
|
261926
261997
|
}
|
|
261927
261998
|
if (loggerProvider) {
|
|
261928
|
-
setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.
|
|
261999
|
+
setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.56.1"));
|
|
261929
262000
|
}
|
|
261930
262001
|
if (!cleanupRegistered2) {
|
|
261931
262002
|
cleanupRegistered2 = true;
|
|
@@ -262587,9 +262658,9 @@ async function assertMinVersion() {
|
|
|
262587
262658
|
if (false) {}
|
|
262588
262659
|
try {
|
|
262589
262660
|
const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
|
|
262590
|
-
if (versionConfig.minVersion && lt("1.
|
|
262661
|
+
if (versionConfig.minVersion && lt("1.56.1", versionConfig.minVersion)) {
|
|
262591
262662
|
console.error(`
|
|
262592
|
-
It looks like your version of UR (${"1.
|
|
262663
|
+
It looks like your version of UR (${"1.56.1"}) needs an update.
|
|
262593
262664
|
A newer version (${versionConfig.minVersion} or higher) is required to continue.
|
|
262594
262665
|
|
|
262595
262666
|
To update, please run:
|
|
@@ -262805,7 +262876,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
262805
262876
|
logError2(new AutoUpdaterError("Another process is currently installing an update"));
|
|
262806
262877
|
logEvent("tengu_auto_updater_lock_contention", {
|
|
262807
262878
|
pid: process.pid,
|
|
262808
|
-
currentVersion: "1.
|
|
262879
|
+
currentVersion: "1.56.1"
|
|
262809
262880
|
});
|
|
262810
262881
|
return "in_progress";
|
|
262811
262882
|
}
|
|
@@ -262814,7 +262885,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
262814
262885
|
if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
|
|
262815
262886
|
logError2(new Error("Windows NPM detected in WSL environment"));
|
|
262816
262887
|
logEvent("tengu_auto_updater_windows_npm_in_wsl", {
|
|
262817
|
-
currentVersion: "1.
|
|
262888
|
+
currentVersion: "1.56.1"
|
|
262818
262889
|
});
|
|
262819
262890
|
console.error(`
|
|
262820
262891
|
Error: Windows NPM detected in WSL
|
|
@@ -263349,7 +263420,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
263349
263420
|
}
|
|
263350
263421
|
async function getDoctorDiagnostic() {
|
|
263351
263422
|
const installationType = await getCurrentInstallationType();
|
|
263352
|
-
const version2 = typeof MACRO !== "undefined" ? "1.
|
|
263423
|
+
const version2 = typeof MACRO !== "undefined" ? "1.56.1" : "unknown";
|
|
263353
263424
|
const installationPath = await getInstallationPath();
|
|
263354
263425
|
const invokedBinary = getInvokedBinary();
|
|
263355
263426
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -264284,8 +264355,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
264284
264355
|
const maxVersion = await getMaxVersion();
|
|
264285
264356
|
if (maxVersion && gt(version2, maxVersion)) {
|
|
264286
264357
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
|
|
264287
|
-
if (gte("1.
|
|
264288
|
-
logForDebugging(`Native installer: current version ${"1.
|
|
264358
|
+
if (gte("1.56.1", maxVersion)) {
|
|
264359
|
+
logForDebugging(`Native installer: current version ${"1.56.1"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
264289
264360
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
264290
264361
|
latency_ms: Date.now() - startTime,
|
|
264291
264362
|
max_version: maxVersion,
|
|
@@ -264296,7 +264367,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
264296
264367
|
version2 = maxVersion;
|
|
264297
264368
|
}
|
|
264298
264369
|
}
|
|
264299
|
-
if (!forceReinstall && version2 === "1.
|
|
264370
|
+
if (!forceReinstall && version2 === "1.56.1" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
|
|
264300
264371
|
logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
|
|
264301
264372
|
logEvent("tengu_native_update_complete", {
|
|
264302
264373
|
latency_ms: Date.now() - startTime,
|
|
@@ -270858,9 +270929,9 @@ class InProcessBackend {
|
|
|
270858
270929
|
}
|
|
270859
270930
|
const isRunning = task.status === "running";
|
|
270860
270931
|
const isAborted2 = task.abortController?.signal.aborted ?? true;
|
|
270861
|
-
const
|
|
270862
|
-
logForDebugging(`[InProcessBackend] isActive() for ${agentId}: ${
|
|
270863
|
-
return
|
|
270932
|
+
const active2 = isRunning && !isAborted2;
|
|
270933
|
+
logForDebugging(`[InProcessBackend] isActive() for ${agentId}: ${active2} (running=${isRunning}, aborted=${isAborted2})`);
|
|
270934
|
+
return active2;
|
|
270864
270935
|
}
|
|
270865
270936
|
}
|
|
270866
270937
|
function createInProcessBackend() {
|
|
@@ -272550,7 +272621,7 @@ async function spawnInProcessTeammate(config2, context5) {
|
|
|
272550
272621
|
abortController
|
|
272551
272622
|
});
|
|
272552
272623
|
if (isPerfettoTracingEnabled()) {
|
|
272553
|
-
|
|
272624
|
+
registerAgent2(agentId, name, parentSessionId);
|
|
272554
272625
|
}
|
|
272555
272626
|
const description = `${name}: ${prompt.substring(0, 50)}${prompt.length > 50 ? "..." : ""}`;
|
|
272556
272627
|
const taskState = {
|
|
@@ -285807,12 +285878,18 @@ async function* runAgent({
|
|
|
285807
285878
|
const rootSetAppState = toolUseContext.setAppStateForTasks ?? toolUseContext.setAppState;
|
|
285808
285879
|
const resolvedAgentModel = getAgentModel(agentDefinition.model, toolUseContext.options.mainLoopModel, model, permissionMode);
|
|
285809
285880
|
const agentId = override?.agentId ? override.agentId : createAgentId();
|
|
285881
|
+
const fanOutParentId = toolUseContext.agentId;
|
|
285882
|
+
const fanOutDecision = canSpawnAgent(fanOutParentId, resolveFanOutLimits());
|
|
285883
|
+
if (!fanOutDecision.allowed) {
|
|
285884
|
+
throw new Error(fanOutDecision.reason);
|
|
285885
|
+
}
|
|
285886
|
+
const releaseFanOutSlot = registerAgent(agentId, fanOutParentId, fanOutDecision.depth);
|
|
285810
285887
|
if (transcriptSubdir) {
|
|
285811
285888
|
setAgentTranscriptSubdir(agentId, transcriptSubdir);
|
|
285812
285889
|
}
|
|
285813
285890
|
if (isPerfettoTracingEnabled()) {
|
|
285814
285891
|
const parentId = toolUseContext.agentId ?? getSessionId();
|
|
285815
|
-
|
|
285892
|
+
registerAgent2(agentId, agentDefinition.agentType, parentId);
|
|
285816
285893
|
}
|
|
285817
285894
|
if (process.env.USER_TYPE === "ant") {
|
|
285818
285895
|
logForDebugging(`[Subagent ${agentDefinition.agentType}] API calls: ${getDisplayPath(getDumpPromptsPath(agentId))}`);
|
|
@@ -286027,6 +286104,7 @@ async function* runAgent({
|
|
|
286027
286104
|
agentDefinition.callback();
|
|
286028
286105
|
}
|
|
286029
286106
|
} finally {
|
|
286107
|
+
releaseFanOutSlot();
|
|
286030
286108
|
await mcpCleanup();
|
|
286031
286109
|
if (agentDefinition.hooks) {
|
|
286032
286110
|
clearSessionHooks(rootSetAppState, agentId);
|
|
@@ -286102,6 +286180,8 @@ function resolveSkillName(skillName, allSkills, agentDefinition) {
|
|
|
286102
286180
|
return null;
|
|
286103
286181
|
}
|
|
286104
286182
|
var init_runAgent = __esm(() => {
|
|
286183
|
+
init_fanOutLimits();
|
|
286184
|
+
init_fanOutSettings();
|
|
286105
286185
|
init_uniqBy();
|
|
286106
286186
|
init_debug();
|
|
286107
286187
|
init_state();
|
|
@@ -334099,7 +334179,7 @@ function isAnyTracingEnabled() {
|
|
|
334099
334179
|
return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
|
|
334100
334180
|
}
|
|
334101
334181
|
function getTracer() {
|
|
334102
|
-
return import_api39.trace.getTracer("ur-agent.gen_ai", "1.
|
|
334182
|
+
return import_api39.trace.getTracer("ur-agent.gen_ai", "1.56.1");
|
|
334103
334183
|
}
|
|
334104
334184
|
function createSpanAttributes(spanType, customAttributes = {}) {
|
|
334105
334185
|
const baseAttributes = getTelemetryAttributes();
|
|
@@ -363169,7 +363249,7 @@ function Feedback({
|
|
|
363169
363249
|
platform: env2.platform,
|
|
363170
363250
|
gitRepo: envInfo.isGit,
|
|
363171
363251
|
terminal: env2.terminal,
|
|
363172
|
-
version: "1.
|
|
363252
|
+
version: "1.56.1",
|
|
363173
363253
|
transcript: normalizeMessagesForAPI(messages),
|
|
363174
363254
|
errors: sanitizedErrors,
|
|
363175
363255
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -363361,7 +363441,7 @@ function Feedback({
|
|
|
363361
363441
|
", ",
|
|
363362
363442
|
env2.terminal,
|
|
363363
363443
|
", v",
|
|
363364
|
-
"1.
|
|
363444
|
+
"1.56.1"
|
|
363365
363445
|
]
|
|
363366
363446
|
}, undefined, true, undefined, this)
|
|
363367
363447
|
]
|
|
@@ -363467,7 +363547,7 @@ ${sanitizedDescription}
|
|
|
363467
363547
|
` + `**Environment Info**
|
|
363468
363548
|
` + `- Platform: ${env2.platform}
|
|
363469
363549
|
` + `- Terminal: ${env2.terminal}
|
|
363470
|
-
` + `- Version: ${"1.
|
|
363550
|
+
` + `- Version: ${"1.56.1"}
|
|
363471
363551
|
` + `- Feedback ID: ${feedbackId}
|
|
363472
363552
|
` + `
|
|
363473
363553
|
**Errors**
|
|
@@ -366577,7 +366657,7 @@ function buildPrimarySection() {
|
|
|
366577
366657
|
}, undefined, false, undefined, this);
|
|
366578
366658
|
return [{
|
|
366579
366659
|
label: "Version",
|
|
366580
|
-
value: "1.
|
|
366660
|
+
value: "1.56.1"
|
|
366581
366661
|
}, {
|
|
366582
366662
|
label: "Session name",
|
|
366583
366663
|
value: nameValue
|
|
@@ -369907,7 +369987,7 @@ function Config({
|
|
|
369907
369987
|
}
|
|
369908
369988
|
}, undefined, false, undefined, this)
|
|
369909
369989
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime178.jsxDEV(ChannelDowngradeDialog, {
|
|
369910
|
-
currentVersion: "1.
|
|
369990
|
+
currentVersion: "1.56.1",
|
|
369911
369991
|
onChoice: (choice) => {
|
|
369912
369992
|
setShowSubmenu(null);
|
|
369913
369993
|
setTabsHidden(false);
|
|
@@ -369919,7 +369999,7 @@ function Config({
|
|
|
369919
369999
|
autoUpdatesChannel: "stable"
|
|
369920
370000
|
};
|
|
369921
370001
|
if (choice === "stay") {
|
|
369922
|
-
newSettings.minimumVersion = "1.
|
|
370002
|
+
newSettings.minimumVersion = "1.56.1";
|
|
369923
370003
|
}
|
|
369924
370004
|
updateSettingsForSource("userSettings", newSettings);
|
|
369925
370005
|
setSettingsData((prev_27) => ({
|
|
@@ -377983,7 +378063,7 @@ function HelpV2(t0) {
|
|
|
377983
378063
|
let t6;
|
|
377984
378064
|
if ($2[31] !== tabs) {
|
|
377985
378065
|
t6 = /* @__PURE__ */ jsx_dev_runtime205.jsxDEV(Tabs, {
|
|
377986
|
-
title: `UR v${"1.
|
|
378066
|
+
title: `UR v${"1.56.1"}`,
|
|
377987
378067
|
color: "professionalBlue",
|
|
377988
378068
|
defaultTab: "general",
|
|
377989
378069
|
children: tabs
|
|
@@ -378900,7 +378980,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
|
|
|
378900
378980
|
async function handleInitialize(options2) {
|
|
378901
378981
|
return {
|
|
378902
378982
|
name: "UR",
|
|
378903
|
-
version: "1.
|
|
378983
|
+
version: "1.56.1",
|
|
378904
378984
|
protocolVersion: "0.1.0",
|
|
378905
378985
|
workspaceRoot: options2.cwd,
|
|
378906
378986
|
capabilities: {
|
|
@@ -387655,9 +387735,9 @@ function DiscoverPlugins({
|
|
|
387655
387735
|
const [loading, setLoading] = import_react131.useState(true);
|
|
387656
387736
|
const [installCounts, setInstallCounts] = import_react131.useState(null);
|
|
387657
387737
|
const [isSearchMode, setIsSearchModeRaw] = import_react131.useState(false);
|
|
387658
|
-
const setIsSearchMode = import_react131.useCallback((
|
|
387659
|
-
setIsSearchModeRaw(
|
|
387660
|
-
onSearchModeChange?.(
|
|
387738
|
+
const setIsSearchMode = import_react131.useCallback((active2) => {
|
|
387739
|
+
setIsSearchModeRaw(active2);
|
|
387740
|
+
onSearchModeChange?.(active2);
|
|
387661
387741
|
}, [onSearchModeChange]);
|
|
387662
387742
|
const {
|
|
387663
387743
|
query: searchQuery,
|
|
@@ -391639,9 +391719,9 @@ function ManagePlugins({
|
|
|
391639
391719
|
const pluginErrors = useAppState((s_1) => s_1.plugins.errors);
|
|
391640
391720
|
const flaggedPlugins = getFlaggedPlugins();
|
|
391641
391721
|
const [isSearchMode, setIsSearchModeRaw] = import_react133.useState(false);
|
|
391642
|
-
const setIsSearchMode = import_react133.useCallback((
|
|
391643
|
-
setIsSearchModeRaw(
|
|
391644
|
-
onSearchModeChange?.(
|
|
391722
|
+
const setIsSearchMode = import_react133.useCallback((active2) => {
|
|
391723
|
+
setIsSearchModeRaw(active2);
|
|
391724
|
+
onSearchModeChange?.(active2);
|
|
391645
391725
|
}, [onSearchModeChange]);
|
|
391646
391726
|
const isTerminalFocused = useTerminalFocus();
|
|
391647
391727
|
const {
|
|
@@ -396008,7 +396088,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
396008
396088
|
return [];
|
|
396009
396089
|
}
|
|
396010
396090
|
}
|
|
396011
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.
|
|
396091
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.56.1") {
|
|
396012
396092
|
if (process.env.USER_TYPE === "ant") {
|
|
396013
396093
|
const changelog = "";
|
|
396014
396094
|
if (changelog) {
|
|
@@ -396035,7 +396115,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.55.0")
|
|
|
396035
396115
|
releaseNotes
|
|
396036
396116
|
};
|
|
396037
396117
|
}
|
|
396038
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.
|
|
396118
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.56.1") {
|
|
396039
396119
|
if (process.env.USER_TYPE === "ant") {
|
|
396040
396120
|
const changelog = "";
|
|
396041
396121
|
if (changelog) {
|
|
@@ -398892,7 +398972,7 @@ function getRecentActivitySync() {
|
|
|
398892
398972
|
return cachedActivity;
|
|
398893
398973
|
}
|
|
398894
398974
|
function getLogoDisplayData() {
|
|
398895
|
-
const version2 = process.env.DEMO_VERSION ?? "1.
|
|
398975
|
+
const version2 = process.env.DEMO_VERSION ?? "1.56.1";
|
|
398896
398976
|
const serverUrl = getDirectConnectServerUrl();
|
|
398897
398977
|
const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
|
|
398898
398978
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -399776,7 +399856,7 @@ function LogoV2() {
|
|
|
399776
399856
|
if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
399777
399857
|
t2 = () => {
|
|
399778
399858
|
const currentConfig2 = getGlobalConfig();
|
|
399779
|
-
if (currentConfig2.lastReleaseNotesSeen === "1.
|
|
399859
|
+
if (currentConfig2.lastReleaseNotesSeen === "1.56.1") {
|
|
399780
399860
|
return;
|
|
399781
399861
|
}
|
|
399782
399862
|
saveGlobalConfig(_temp327);
|
|
@@ -400461,12 +400541,12 @@ function LogoV2() {
|
|
|
400461
400541
|
return t41;
|
|
400462
400542
|
}
|
|
400463
400543
|
function _temp327(current) {
|
|
400464
|
-
if (current.lastReleaseNotesSeen === "1.
|
|
400544
|
+
if (current.lastReleaseNotesSeen === "1.56.1") {
|
|
400465
400545
|
return current;
|
|
400466
400546
|
}
|
|
400467
400547
|
return {
|
|
400468
400548
|
...current,
|
|
400469
|
-
lastReleaseNotesSeen: "1.
|
|
400549
|
+
lastReleaseNotesSeen: "1.56.1"
|
|
400470
400550
|
};
|
|
400471
400551
|
}
|
|
400472
400552
|
function _temp241(s_0) {
|
|
@@ -406843,7 +406923,7 @@ function listProfiles(read = (source) => getSettingsForSource(source)) {
|
|
|
406843
406923
|
const seen = new Set;
|
|
406844
406924
|
for (const source of LOOKUP_ORDER) {
|
|
406845
406925
|
const permissions = read(source)?.permissions;
|
|
406846
|
-
const
|
|
406926
|
+
const active2 = permissions?.activeProfile;
|
|
406847
406927
|
for (const [name, profile] of Object.entries(permissions?.profiles ?? {})) {
|
|
406848
406928
|
if (seen.has(name))
|
|
406849
406929
|
continue;
|
|
@@ -406854,7 +406934,7 @@ function listProfiles(read = (source) => getSettingsForSource(source)) {
|
|
|
406854
406934
|
allow: profile.allow?.length ?? 0,
|
|
406855
406935
|
deny: profile.deny?.length ?? 0,
|
|
406856
406936
|
ask: profile.ask?.length ?? 0,
|
|
406857
|
-
active:
|
|
406937
|
+
active: active2 === name
|
|
406858
406938
|
});
|
|
406859
406939
|
}
|
|
406860
406940
|
}
|
|
@@ -409196,14 +409276,14 @@ async function launchUltraplan(opts) {
|
|
|
409196
409276
|
onSessionReady
|
|
409197
409277
|
} = opts;
|
|
409198
409278
|
const {
|
|
409199
|
-
ultraplanSessionUrl:
|
|
409279
|
+
ultraplanSessionUrl: active2,
|
|
409200
409280
|
ultraplanLaunching
|
|
409201
409281
|
} = getAppState();
|
|
409202
|
-
if (
|
|
409282
|
+
if (active2 || ultraplanLaunching) {
|
|
409203
409283
|
logEvent("tengu_ultraplan_create_failed", {
|
|
409204
|
-
reason:
|
|
409284
|
+
reason: active2 ? "already_polling" : "already_launching"
|
|
409205
409285
|
});
|
|
409206
|
-
return buildAlreadyActiveMessage(
|
|
409286
|
+
return buildAlreadyActiveMessage(active2);
|
|
409207
409287
|
}
|
|
409208
409288
|
if (!blurb && !seedPlan) {
|
|
409209
409289
|
return [
|
|
@@ -409352,14 +409432,14 @@ var ULTRAPLAN_TIMEOUT_MS, CCR_TERMS_URL2 = "https://docs.ur.dev/docs/en/ur-on-th
|
|
|
409352
409432
|
return null;
|
|
409353
409433
|
}
|
|
409354
409434
|
const {
|
|
409355
|
-
ultraplanSessionUrl:
|
|
409435
|
+
ultraplanSessionUrl: active2,
|
|
409356
409436
|
ultraplanLaunching
|
|
409357
409437
|
} = context6.getAppState();
|
|
409358
|
-
if (
|
|
409438
|
+
if (active2 || ultraplanLaunching) {
|
|
409359
409439
|
logEvent("tengu_ultraplan_create_failed", {
|
|
409360
|
-
reason:
|
|
409440
|
+
reason: active2 ? "already_polling" : "already_launching"
|
|
409361
409441
|
});
|
|
409362
|
-
onDone(buildAlreadyActiveMessage(
|
|
409442
|
+
onDone(buildAlreadyActiveMessage(active2), {
|
|
409363
409443
|
display: "system"
|
|
409364
409444
|
});
|
|
409365
409445
|
return null;
|
|
@@ -417642,7 +417722,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
|
|
|
417642
417722
|
if (spec.name !== specName) {
|
|
417643
417723
|
throw new Error("Agentic CI workflow spec name does not match");
|
|
417644
417724
|
}
|
|
417645
|
-
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.
|
|
417725
|
+
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.56.1" : "1.56.1");
|
|
417646
417726
|
if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
|
|
417647
417727
|
throw new Error("invalid ur-agent package version");
|
|
417648
417728
|
}
|
|
@@ -418635,7 +418715,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
|
|
|
418635
418715
|
path: ".github/workflows/ur.yml",
|
|
418636
418716
|
root: "project",
|
|
418637
418717
|
content: compileAgenticCiWorkflow("default", {
|
|
418638
|
-
packageVersion: typeof MACRO !== "undefined" ? "1.
|
|
418718
|
+
packageVersion: typeof MACRO !== "undefined" ? "1.56.1" : "1.56.1"
|
|
418639
418719
|
})
|
|
418640
418720
|
},
|
|
418641
418721
|
{
|
|
@@ -418698,7 +418778,7 @@ function value(tokens, flag) {
|
|
|
418698
418778
|
return index2 >= 0 ? tokens[index2 + 1] : undefined;
|
|
418699
418779
|
}
|
|
418700
418780
|
function cliVersion() {
|
|
418701
|
-
return typeof MACRO !== "undefined" ? "1.
|
|
418781
|
+
return typeof MACRO !== "undefined" ? "1.56.1" : "1.56.1";
|
|
418702
418782
|
}
|
|
418703
418783
|
function workflowPath(cwd2) {
|
|
418704
418784
|
return join158(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
|
|
@@ -424216,20 +424296,20 @@ function createRuntime2(deps) {
|
|
|
424216
424296
|
const validatedCwd = validateSessionCwd(cwd2);
|
|
424217
424297
|
const validatedMcpServers = validateMcpServers(mcpServers);
|
|
424218
424298
|
const validatedAdditionalDirectories = validateAdditionalDirectories(additionalDirectories);
|
|
424219
|
-
const
|
|
424220
|
-
if (
|
|
424221
|
-
if (
|
|
424299
|
+
const active2 = sessions.get(sessionId);
|
|
424300
|
+
if (active2) {
|
|
424301
|
+
if (active2.cwd !== validatedCwd) {
|
|
424222
424302
|
invalidParams2("session/resume cwd must match the original session cwd");
|
|
424223
424303
|
}
|
|
424224
|
-
if (
|
|
424304
|
+
if (active2.activePrompt) {
|
|
424225
424305
|
throw new RequestError(-32000, `session ${sessionId} already has an active prompt`);
|
|
424226
424306
|
}
|
|
424227
|
-
|
|
424228
|
-
|
|
424229
|
-
touch(sessionId,
|
|
424307
|
+
active2.mcpServers = validatedMcpServers;
|
|
424308
|
+
active2.additionalDirectories = validatedAdditionalDirectories;
|
|
424309
|
+
touch(sessionId, active2);
|
|
424230
424310
|
return {
|
|
424231
|
-
modes: modeState(
|
|
424232
|
-
configOptions: configOptions(
|
|
424311
|
+
modes: modeState(active2),
|
|
424312
|
+
configOptions: configOptions(active2)
|
|
424233
424313
|
};
|
|
424234
424314
|
}
|
|
424235
424315
|
assertCapacity();
|
|
@@ -424464,12 +424544,12 @@ function createRuntime2(deps) {
|
|
|
424464
424544
|
const deleteSession = async (sessionId) => {
|
|
424465
424545
|
const metadataPath = persistedSessionPath(sessionId, sessionStoreRoot);
|
|
424466
424546
|
const historyPath = persistedSessionHistoryPath(sessionId, sessionStoreRoot);
|
|
424467
|
-
const
|
|
424547
|
+
const active2 = sessions.get(sessionId);
|
|
424468
424548
|
const persisted = shouldPersistSessions && existsSync42(metadataPath);
|
|
424469
|
-
if (!
|
|
424549
|
+
if (!active2 && !persisted)
|
|
424470
424550
|
invalidParams2(`unknown session: ${sessionId}`);
|
|
424471
|
-
if (
|
|
424472
|
-
await waitForPromptToStop(
|
|
424551
|
+
if (active2) {
|
|
424552
|
+
await waitForPromptToStop(active2);
|
|
424473
424553
|
sessions.delete(sessionId);
|
|
424474
424554
|
}
|
|
424475
424555
|
if (shouldPersistSessions) {
|
|
@@ -424554,7 +424634,7 @@ function createAcpStdioApp(deps) {
|
|
|
424554
424634
|
}
|
|
424555
424635
|
},
|
|
424556
424636
|
authMethods: [],
|
|
424557
|
-
agentInfo: { name: "UR-Nexus", version: "1.
|
|
424637
|
+
agentInfo: { name: "UR-Nexus", version: "1.56.1" }
|
|
424558
424638
|
})).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
|
|
424559
424639
|
const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
|
|
424560
424640
|
await runtime2.announce({
|
|
@@ -424651,7 +424731,7 @@ function createAcpStdioAgent(deps) {
|
|
|
424651
424731
|
}
|
|
424652
424732
|
},
|
|
424653
424733
|
authMethods: [],
|
|
424654
|
-
agentInfo: { name: "UR-Nexus", version: "1.
|
|
424734
|
+
agentInfo: { name: "UR-Nexus", version: "1.56.1" }
|
|
424655
424735
|
});
|
|
424656
424736
|
return;
|
|
424657
424737
|
case "authenticate":
|
|
@@ -432421,11 +432501,11 @@ async function steerCloudTask(cwd2, id, message, options2 = {}) {
|
|
|
432421
432501
|
reason: "live steering is supported for managed cloud tasks; use ur bg for steerable local runs"
|
|
432422
432502
|
};
|
|
432423
432503
|
}
|
|
432424
|
-
const
|
|
432504
|
+
const active2 = (task.candidates ?? []).filter((candidate) => candidate.status === "running" && typeof candidate.sessionId === "string").map((candidate) => ({
|
|
432425
432505
|
id: candidate.id,
|
|
432426
432506
|
sessionId: candidate.sessionId
|
|
432427
432507
|
}));
|
|
432428
|
-
if (
|
|
432508
|
+
if (active2.length === 0) {
|
|
432429
432509
|
return {
|
|
432430
432510
|
state: "rejected",
|
|
432431
432511
|
reason: "no active managed candidate accepted the message"
|
|
@@ -432441,7 +432521,7 @@ async function steerCloudTask(cwd2, id, message, options2 = {}) {
|
|
|
432441
432521
|
});
|
|
432442
432522
|
task.steeringReceipts = task.steeringReceipts.slice(-MAX_CLOUD_STEERING_RECEIPTS);
|
|
432443
432523
|
task.updatedAt = now7();
|
|
432444
|
-
return { state: "reserved", active };
|
|
432524
|
+
return { state: "reserved", active: active2 };
|
|
432445
432525
|
});
|
|
432446
432526
|
if (reservation.state === "rejected") {
|
|
432447
432527
|
return {
|
|
@@ -433542,11 +433622,11 @@ async function handleArtifactsPost(cwd2, url3, exec7) {
|
|
|
433542
433622
|
return { status: 404, type: "application/json", body: JSON.stringify({ error: `Unknown endpoint: ${path22}` }) };
|
|
433543
433623
|
}
|
|
433544
433624
|
function activeArtifactsServer() {
|
|
433545
|
-
return
|
|
433625
|
+
return active2 ? { port: active2.port, url: `http://127.0.0.1:${active2.port}` } : null;
|
|
433546
433626
|
}
|
|
433547
433627
|
function startArtifactsServer(cwd2, port = 4180, exec7) {
|
|
433548
|
-
if (
|
|
433549
|
-
return Promise.resolve({ port:
|
|
433628
|
+
if (active2) {
|
|
433629
|
+
return Promise.resolve({ port: active2.port, url: `http://127.0.0.1:${active2.port}`, alreadyRunning: true });
|
|
433550
433630
|
}
|
|
433551
433631
|
if (starting) {
|
|
433552
433632
|
return starting.then((result) => ({ ...result, alreadyRunning: true }));
|
|
@@ -433590,10 +433670,10 @@ function startArtifactsServer(cwd2, port = 4180, exec7) {
|
|
|
433590
433670
|
server2.listen(port, "127.0.0.1", () => {
|
|
433591
433671
|
const address = server2.address();
|
|
433592
433672
|
const boundPort = typeof address === "object" && address ? address.port : port;
|
|
433593
|
-
|
|
433673
|
+
active2 = { server: server2, port: boundPort };
|
|
433594
433674
|
server2.once("close", () => {
|
|
433595
|
-
if (
|
|
433596
|
-
|
|
433675
|
+
if (active2?.server === server2)
|
|
433676
|
+
active2 = null;
|
|
433597
433677
|
});
|
|
433598
433678
|
resolvePromise({
|
|
433599
433679
|
port: boundPort,
|
|
@@ -433618,16 +433698,16 @@ async function stopArtifactsServer() {
|
|
|
433618
433698
|
await starting.catch(() => {
|
|
433619
433699
|
return;
|
|
433620
433700
|
});
|
|
433621
|
-
if (!
|
|
433701
|
+
if (!active2)
|
|
433622
433702
|
return false;
|
|
433623
|
-
const { server: server2 } =
|
|
433624
|
-
|
|
433703
|
+
const { server: server2 } = active2;
|
|
433704
|
+
active2 = null;
|
|
433625
433705
|
await new Promise((resolvePromise) => server2.close(() => resolvePromise()));
|
|
433626
433706
|
return true;
|
|
433627
433707
|
}
|
|
433628
433708
|
var STATUS_COLOR, DIFF_VIEWER_HEAD = `
|
|
433629
433709
|
<link rel="stylesheet" href="/assets/hljs.css">
|
|
433630
|
-
<link rel="stylesheet" href="/assets/diff2html.css">`, ASSET_SPECS, assetCache, SAFE_INLINE_ATTACHMENT_TYPES,
|
|
433710
|
+
<link rel="stylesheet" href="/assets/diff2html.css">`, ASSET_SPECS, assetCache, SAFE_INLINE_ATTACHMENT_TYPES, active2 = null, starting = null;
|
|
433631
433711
|
var init_artifactsServer = __esm(() => {
|
|
433632
433712
|
init_dashboardRoutes();
|
|
433633
433713
|
init_artifacts();
|
|
@@ -434846,22 +434926,22 @@ async function runCrew(name, options2) {
|
|
|
434846
434926
|
let spawned = 0;
|
|
434847
434927
|
if (options2.dynamic) {
|
|
434848
434928
|
const governor = Math.min(32, Math.max(1, options2.maxWorkers ?? 8));
|
|
434849
|
-
const
|
|
434929
|
+
const active3 = new Set;
|
|
434850
434930
|
const todoCount = () => {
|
|
434851
434931
|
const spec = loadCrew(cwd2, name);
|
|
434852
434932
|
return spec ? spec.tasks.filter((t) => t.status === "todo").length : 0;
|
|
434853
434933
|
};
|
|
434854
434934
|
for (;; ) {
|
|
434855
|
-
while (
|
|
434935
|
+
while (active3.size < governor && todoCount() > active3.size) {
|
|
434856
434936
|
spawned += 1;
|
|
434857
434937
|
const id = `w${spawned}`;
|
|
434858
|
-
const p2 = worker(id).finally(() =>
|
|
434859
|
-
|
|
434938
|
+
const p2 = worker(id).finally(() => active3.delete(p2));
|
|
434939
|
+
active3.add(p2);
|
|
434860
434940
|
}
|
|
434861
|
-
if (
|
|
434941
|
+
if (active3.size === 0)
|
|
434862
434942
|
break;
|
|
434863
|
-
await Promise.race(
|
|
434864
|
-
if (
|
|
434943
|
+
await Promise.race(active3);
|
|
434944
|
+
if (active3.size === 0 && todoCount() === 0)
|
|
434865
434945
|
break;
|
|
434866
434946
|
}
|
|
434867
434947
|
} else {
|
|
@@ -625756,8 +625836,8 @@ function resolveAgentOverrides(allAgents, activeAgents) {
|
|
|
625756
625836
|
if (seen.has(key))
|
|
625757
625837
|
continue;
|
|
625758
625838
|
seen.add(key);
|
|
625759
|
-
const
|
|
625760
|
-
const overriddenBy =
|
|
625839
|
+
const active3 = activeMap.get(agent2.agentType);
|
|
625840
|
+
const overriddenBy = active3 && active3.source !== agent2.source ? active3.source : undefined;
|
|
625761
625841
|
resolved.push({ ...agent2, overriddenBy });
|
|
625762
625842
|
}
|
|
625763
625843
|
return resolved;
|
|
@@ -632018,7 +632098,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
|
|
|
632018
632098
|
smapsRollup,
|
|
632019
632099
|
platform: process.platform,
|
|
632020
632100
|
nodeVersion: process.version,
|
|
632021
|
-
ccVersion: "1.
|
|
632101
|
+
ccVersion: "1.56.1"
|
|
632022
632102
|
};
|
|
632023
632103
|
}
|
|
632024
632104
|
async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
|
|
@@ -632598,7 +632678,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
632598
632678
|
var call149 = async () => {
|
|
632599
632679
|
return {
|
|
632600
632680
|
type: "text",
|
|
632601
|
-
value: "1.
|
|
632681
|
+
value: "1.56.1"
|
|
632602
632682
|
};
|
|
632603
632683
|
}, version2, version_default;
|
|
632604
632684
|
var init_version = __esm(() => {
|
|
@@ -643669,7 +643749,7 @@ function generateHtmlReport(data, insights) {
|
|
|
643669
643749
|
</html>`;
|
|
643670
643750
|
}
|
|
643671
643751
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
643672
|
-
const version3 = typeof MACRO !== "undefined" ? "1.
|
|
643752
|
+
const version3 = typeof MACRO !== "undefined" ? "1.56.1" : "unknown";
|
|
643673
643753
|
const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
|
|
643674
643754
|
const facets_summary = {
|
|
643675
643755
|
total: facets.size,
|
|
@@ -647972,7 +648052,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
647972
648052
|
init_settings2();
|
|
647973
648053
|
init_slowOperations();
|
|
647974
648054
|
init_uuid();
|
|
647975
|
-
VERSION7 = typeof MACRO !== "undefined" ? "1.
|
|
648055
|
+
VERSION7 = typeof MACRO !== "undefined" ? "1.56.1" : "unknown";
|
|
647976
648056
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
647977
648057
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
647978
648058
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -649187,7 +649267,7 @@ var init_filesystem = __esm(() => {
|
|
|
649187
649267
|
});
|
|
649188
649268
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
649189
649269
|
const nonce = randomBytes19(16).toString("hex");
|
|
649190
|
-
return join226(getURTempDir(), "bundled-skills", "1.
|
|
649270
|
+
return join226(getURTempDir(), "bundled-skills", "1.56.1", nonce);
|
|
649191
649271
|
});
|
|
649192
649272
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
649193
649273
|
});
|
|
@@ -655482,7 +655562,7 @@ function computeFingerprint(messageText2, version3) {
|
|
|
655482
655562
|
}
|
|
655483
655563
|
function computeFingerprintFromMessages(messages) {
|
|
655484
655564
|
const firstMessageText = extractFirstMessageText(messages);
|
|
655485
|
-
return computeFingerprint(firstMessageText, "1.
|
|
655565
|
+
return computeFingerprint(firstMessageText, "1.56.1");
|
|
655486
655566
|
}
|
|
655487
655567
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
655488
655568
|
var init_fingerprint = () => {};
|
|
@@ -657378,7 +657458,7 @@ async function sideQuery(opts) {
|
|
|
657378
657458
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
657379
657459
|
}
|
|
657380
657460
|
const messageText2 = extractFirstUserMessageText(messages);
|
|
657381
|
-
const fingerprint2 = computeFingerprint(messageText2, "1.
|
|
657461
|
+
const fingerprint2 = computeFingerprint(messageText2, "1.56.1");
|
|
657382
657462
|
const attributionHeader = getAttributionHeader(fingerprint2);
|
|
657383
657463
|
const systemBlocks = [
|
|
657384
657464
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -662149,7 +662229,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
662149
662229
|
slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
|
|
662150
662230
|
apiKeySource: getURHQApiKeyWithSource().source,
|
|
662151
662231
|
betas: getSdkBetas(),
|
|
662152
|
-
ur_version: "1.
|
|
662232
|
+
ur_version: "1.56.1",
|
|
662153
662233
|
output_style: outputStyle2,
|
|
662154
662234
|
agents: inputs.agents.map((agent2) => agent2.agentType),
|
|
662155
662235
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
|
|
@@ -676009,7 +676089,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
676009
676089
|
function getSemverPart(version3) {
|
|
676010
676090
|
return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
|
|
676011
676091
|
}
|
|
676012
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.
|
|
676092
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.56.1") {
|
|
676013
676093
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react222.useState(() => getSemverPart(initialVersion));
|
|
676014
676094
|
if (!updatedVersion) {
|
|
676015
676095
|
return null;
|
|
@@ -676058,7 +676138,7 @@ function AutoUpdater({
|
|
|
676058
676138
|
return;
|
|
676059
676139
|
}
|
|
676060
676140
|
if (false) {}
|
|
676061
|
-
const currentVersion = "1.
|
|
676141
|
+
const currentVersion = "1.56.1";
|
|
676062
676142
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
676063
676143
|
let latestVersion = await getLatestVersion(channel);
|
|
676064
676144
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -676287,12 +676367,12 @@ function NativeAutoUpdater({
|
|
|
676287
676367
|
logEvent("tengu_native_auto_updater_start", {});
|
|
676288
676368
|
try {
|
|
676289
676369
|
const maxVersion = await getMaxVersion();
|
|
676290
|
-
if (maxVersion && gt("1.
|
|
676370
|
+
if (maxVersion && gt("1.56.1", maxVersion)) {
|
|
676291
676371
|
const msg = await getMaxVersionMessage();
|
|
676292
676372
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
676293
676373
|
}
|
|
676294
676374
|
const result = await installLatest(channel);
|
|
676295
|
-
const currentVersion = "1.
|
|
676375
|
+
const currentVersion = "1.56.1";
|
|
676296
676376
|
const latencyMs = Date.now() - startTime;
|
|
676297
676377
|
if (result.lockFailed) {
|
|
676298
676378
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -676429,17 +676509,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
676429
676509
|
const maxVersion = await getMaxVersion();
|
|
676430
676510
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
676431
676511
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
676432
|
-
if (gte("1.
|
|
676433
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.
|
|
676512
|
+
if (gte("1.56.1", maxVersion)) {
|
|
676513
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.56.1"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
676434
676514
|
setUpdateAvailable(false);
|
|
676435
676515
|
return;
|
|
676436
676516
|
}
|
|
676437
676517
|
latest = maxVersion;
|
|
676438
676518
|
}
|
|
676439
|
-
const hasUpdate = latest && !gte("1.
|
|
676519
|
+
const hasUpdate = latest && !gte("1.56.1", latest) && !shouldSkipVersion(latest);
|
|
676440
676520
|
setUpdateAvailable(!!hasUpdate);
|
|
676441
676521
|
if (hasUpdate) {
|
|
676442
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.
|
|
676522
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.56.1"} -> ${latest}`);
|
|
676443
676523
|
}
|
|
676444
676524
|
};
|
|
676445
676525
|
$2[0] = t1;
|
|
@@ -676473,7 +676553,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
676473
676553
|
wrap: "truncate",
|
|
676474
676554
|
children: [
|
|
676475
676555
|
"currentVersion: ",
|
|
676476
|
-
"1.
|
|
676556
|
+
"1.56.1"
|
|
676477
676557
|
]
|
|
676478
676558
|
}, undefined, true, undefined, this);
|
|
676479
676559
|
$2[3] = verbose;
|
|
@@ -687170,7 +687250,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
687170
687250
|
project_dir: getOriginalCwd(),
|
|
687171
687251
|
added_dirs: addedDirs
|
|
687172
687252
|
},
|
|
687173
|
-
version: "1.
|
|
687253
|
+
version: "1.56.1",
|
|
687174
687254
|
output_style: {
|
|
687175
687255
|
name: outputStyleName
|
|
687176
687256
|
},
|
|
@@ -687253,7 +687333,7 @@ function StatusLineInner({
|
|
|
687253
687333
|
const taskValues = Object.values(tasks2);
|
|
687254
687334
|
const taskRunningCount = taskValues.filter((task2) => task2.status === "running" || task2.status === "pending").length;
|
|
687255
687335
|
const defaultStatusLineText = buildDefaultStatusBar({
|
|
687256
|
-
version: "1.
|
|
687336
|
+
version: "1.56.1",
|
|
687257
687337
|
providerLabel: providerRuntime.providerLabel,
|
|
687258
687338
|
authMode: providerRuntime.authLabel,
|
|
687259
687339
|
model: providerRuntime.model ?? renderModelName(mainLoopModel),
|
|
@@ -689584,9 +689664,9 @@ function useSwarmBanner() {
|
|
|
689584
689664
|
};
|
|
689585
689665
|
}
|
|
689586
689666
|
}
|
|
689587
|
-
const
|
|
689588
|
-
if (
|
|
689589
|
-
const task2 =
|
|
689667
|
+
const active3 = getActiveAgentForInput(state2);
|
|
689668
|
+
if (active3.type === "named_agent") {
|
|
689669
|
+
const task2 = active3.task;
|
|
689590
689670
|
let name;
|
|
689591
689671
|
for (const [n3, id] of state2.agentNameRegistry) {
|
|
689592
689672
|
if (id === task2.id) {
|
|
@@ -699396,7 +699476,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
|
|
|
699396
699476
|
} catch {}
|
|
699397
699477
|
const data = {
|
|
699398
699478
|
trigger: trigger2,
|
|
699399
|
-
version: "1.
|
|
699479
|
+
version: "1.56.1",
|
|
699400
699480
|
platform: process.platform,
|
|
699401
699481
|
transcript,
|
|
699402
699482
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -711676,7 +711756,7 @@ function WelcomeV2() {
|
|
|
711676
711756
|
dimColor: true,
|
|
711677
711757
|
children: [
|
|
711678
711758
|
"v",
|
|
711679
|
-
"1.
|
|
711759
|
+
"1.56.1"
|
|
711680
711760
|
]
|
|
711681
711761
|
}, undefined, true, undefined, this)
|
|
711682
711762
|
]
|
|
@@ -712936,7 +713016,7 @@ function completeOnboarding() {
|
|
|
712936
713016
|
saveGlobalConfig((current) => ({
|
|
712937
713017
|
...current,
|
|
712938
713018
|
hasCompletedOnboarding: true,
|
|
712939
|
-
lastOnboardingVersion: "1.
|
|
713019
|
+
lastOnboardingVersion: "1.56.1"
|
|
712940
713020
|
}));
|
|
712941
713021
|
}
|
|
712942
713022
|
function showDialog(root2, renderer) {
|
|
@@ -717980,7 +718060,7 @@ function appendToLog(path24, message) {
|
|
|
717980
718060
|
cwd: getFsImplementation().cwd(),
|
|
717981
718061
|
userType: process.env.USER_TYPE,
|
|
717982
718062
|
sessionId: getSessionId(),
|
|
717983
|
-
version: "1.
|
|
718063
|
+
version: "1.56.1"
|
|
717984
718064
|
};
|
|
717985
718065
|
getLogWriter(path24).write(messageWithTimestamp);
|
|
717986
718066
|
}
|
|
@@ -722139,8 +722219,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
722139
722219
|
}
|
|
722140
722220
|
async function checkEnvLessBridgeMinVersion() {
|
|
722141
722221
|
const cfg = await getEnvLessBridgeConfig();
|
|
722142
|
-
if (cfg.min_version && lt("1.
|
|
722143
|
-
return `Your version of UR (${"1.
|
|
722222
|
+
if (cfg.min_version && lt("1.56.1", cfg.min_version)) {
|
|
722223
|
+
return `Your version of UR (${"1.56.1"}) is too old for Remote Control.
|
|
722144
722224
|
Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
|
|
722145
722225
|
}
|
|
722146
722226
|
return null;
|
|
@@ -722614,7 +722694,7 @@ async function initBridgeCore(params) {
|
|
|
722614
722694
|
const rawApi = createBridgeApiClient({
|
|
722615
722695
|
baseUrl,
|
|
722616
722696
|
getAccessToken,
|
|
722617
|
-
runnerVersion: "1.
|
|
722697
|
+
runnerVersion: "1.56.1",
|
|
722618
722698
|
onDebug: logForDebugging,
|
|
722619
722699
|
onAuth401,
|
|
722620
722700
|
getTrustedDeviceToken
|
|
@@ -732086,7 +732166,7 @@ function getAgUiCapabilities() {
|
|
|
732086
732166
|
name: "UR-Nexus",
|
|
732087
732167
|
type: "ur-nexus",
|
|
732088
732168
|
description: "Provider-flexible, local-first autonomous engineering workflow agent.",
|
|
732089
|
-
version: "1.
|
|
732169
|
+
version: "1.56.1",
|
|
732090
732170
|
provider: "UR",
|
|
732091
732171
|
documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
|
|
732092
732172
|
},
|
|
@@ -733226,7 +733306,7 @@ function createMCPServer(cwd4, debug2, verbose) {
|
|
|
733226
733306
|
};
|
|
733227
733307
|
const server2 = new Server({
|
|
733228
733308
|
name: "ur-nexus",
|
|
733229
|
-
version: "1.
|
|
733309
|
+
version: "1.56.1"
|
|
733230
733310
|
}, {
|
|
733231
733311
|
capabilities: {
|
|
733232
733312
|
tools: {}
|
|
@@ -733639,7 +733719,7 @@ function supportsApps(capabilities) {
|
|
|
733639
733719
|
function collectMcpHeaderBindings(schema) {
|
|
733640
733720
|
const bindings = [];
|
|
733641
733721
|
const seenHeaders = new Set;
|
|
733642
|
-
const
|
|
733722
|
+
const active3 = new Set;
|
|
733643
733723
|
let valid = true;
|
|
733644
733724
|
const resolveLocalRef = (reference) => {
|
|
733645
733725
|
if (reference === "#")
|
|
@@ -733670,9 +733750,9 @@ function collectMcpHeaderBindings(schema) {
|
|
|
733670
733750
|
valid = false;
|
|
733671
733751
|
return;
|
|
733672
733752
|
}
|
|
733673
|
-
if (
|
|
733753
|
+
if (active3.has(node))
|
|
733674
733754
|
return;
|
|
733675
|
-
|
|
733755
|
+
active3.add(node);
|
|
733676
733756
|
if (typeof node.$ref === "string") {
|
|
733677
733757
|
const resolved = resolveLocalRef(node.$ref);
|
|
733678
733758
|
if (node.$ref.startsWith("#") && resolved === undefined) {
|
|
@@ -733687,7 +733767,7 @@ function collectMcpHeaderBindings(schema) {
|
|
|
733687
733767
|
const normalized = typeof headerName === "string" ? headerName.toLowerCase() : "";
|
|
733688
733768
|
if (path24.length === 0 || typeof headerName !== "string" || !HTTP_FIELD_NAME.test(headerName) || seenHeaders.has(normalized) || type !== "string" && type !== "integer" && type !== "boolean") {
|
|
733689
733769
|
valid = false;
|
|
733690
|
-
|
|
733770
|
+
active3.delete(node);
|
|
733691
733771
|
return;
|
|
733692
733772
|
}
|
|
733693
733773
|
seenHeaders.add(normalized);
|
|
@@ -733705,7 +733785,7 @@ function collectMcpHeaderBindings(schema) {
|
|
|
733705
733785
|
visit2(child, path24, depth + 1);
|
|
733706
733786
|
}
|
|
733707
733787
|
}
|
|
733708
|
-
|
|
733788
|
+
active3.delete(node);
|
|
733709
733789
|
};
|
|
733710
733790
|
visit2(schema, []);
|
|
733711
733791
|
return valid ? bindings : undefined;
|
|
@@ -734384,7 +734464,7 @@ function thrownResponse(error40) {
|
|
|
734384
734464
|
}
|
|
734385
734465
|
async function createUrMcp2026Runtime(options4) {
|
|
734386
734466
|
const server2 = createMCPServer(options4.cwd, options4.debug === true, options4.verbose === true);
|
|
734387
|
-
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.
|
|
734467
|
+
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.56.1" }, { capabilities: {} });
|
|
734388
734468
|
const [clientTransport, serverTransport] = createLinkedTransportPair();
|
|
734389
734469
|
try {
|
|
734390
734470
|
await server2.connect(serverTransport);
|
|
@@ -734395,7 +734475,7 @@ async function createUrMcp2026Runtime(options4) {
|
|
|
734395
734475
|
}
|
|
734396
734476
|
const runtime2 = new Mcp2026Runtime({
|
|
734397
734477
|
cwd: options4.cwd,
|
|
734398
|
-
version: "1.
|
|
734478
|
+
version: "1.56.1",
|
|
734399
734479
|
backend: {
|
|
734400
734480
|
listTools: async () => {
|
|
734401
734481
|
const listed = await client2.listTools();
|
|
@@ -735050,8 +735130,8 @@ async function providerListHandler(options4 = {}) {
|
|
|
735050
735130
|
}
|
|
735051
735131
|
async function providerStatusHandler(options4 = {}) {
|
|
735052
735132
|
const settings = getInitialSettings();
|
|
735053
|
-
const
|
|
735054
|
-
const result = await doctorProvider(
|
|
735133
|
+
const active3 = getActiveProviderSettings(settings).active ?? "ollama";
|
|
735134
|
+
const result = await doctorProvider(active3, { settings });
|
|
735055
735135
|
writeOutput(formatProviderStatus(result, Boolean(options4.json)));
|
|
735056
735136
|
process.exit(result.ok ? 0 : 1);
|
|
735057
735137
|
}
|
|
@@ -735066,15 +735146,15 @@ async function providerDoctorHandler(providerArg, options4 = {}) {
|
|
|
735066
735146
|
provider = resolved;
|
|
735067
735147
|
}
|
|
735068
735148
|
const settings = getInitialSettings();
|
|
735069
|
-
const
|
|
735070
|
-
const result = await doctorProvider(provider ??
|
|
735149
|
+
const active3 = getActiveProviderSettings(settings).active ?? "ollama";
|
|
735150
|
+
const result = await doctorProvider(provider ?? active3, { settings });
|
|
735071
735151
|
writeOutput(formatProviderDoctor(result, Boolean(options4.json)));
|
|
735072
735152
|
process.exit(result.ok ? 0 : 1);
|
|
735073
735153
|
}
|
|
735074
735154
|
async function providerModelsHandler(providerArg, options4 = {}) {
|
|
735075
735155
|
const settings = getInitialSettings();
|
|
735076
|
-
const
|
|
735077
|
-
const provider = providerArg ? resolveProviderId(providerArg) :
|
|
735156
|
+
const active3 = getActiveProviderSettings(settings).active ?? "ollama";
|
|
735157
|
+
const provider = providerArg ? resolveProviderId(providerArg) : active3;
|
|
735078
735158
|
if (!provider) {
|
|
735079
735159
|
writeError(`Unknown provider "${providerArg}". Run: ur provider list`);
|
|
735080
735160
|
process.exit(1);
|
|
@@ -736528,7 +736608,7 @@ async function update() {
|
|
|
736528
736608
|
logEvent("tengu_update_check", {});
|
|
736529
736609
|
const diagnostic2 = await getDoctorDiagnostic();
|
|
736530
736610
|
const result = await checkUpgradeStatus({
|
|
736531
|
-
currentVersion: "1.
|
|
736611
|
+
currentVersion: "1.56.1",
|
|
736532
736612
|
packageName: UR_AGENT_PACKAGE_NAME,
|
|
736533
736613
|
installationType: diagnostic2.installationType,
|
|
736534
736614
|
latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
|
|
@@ -737844,7 +737924,7 @@ ${customInstructions}` : customInstructions;
|
|
|
737844
737924
|
}
|
|
737845
737925
|
}
|
|
737846
737926
|
logForDiagnosticsNoPII("info", "started", {
|
|
737847
|
-
version: "1.
|
|
737927
|
+
version: "1.56.1",
|
|
737848
737928
|
is_native_binary: isInBundledMode()
|
|
737849
737929
|
});
|
|
737850
737930
|
registerCleanup(async () => {
|
|
@@ -738630,7 +738710,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
738630
738710
|
pendingHookMessages
|
|
738631
738711
|
}, renderAndRun);
|
|
738632
738712
|
}
|
|
738633
|
-
}).version("1.
|
|
738713
|
+
}).version("1.56.1 (UR-Nexus)", "-v, --version", "Output the version number");
|
|
738634
738714
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
738635
738715
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
738636
738716
|
if (canUserConfigureAdvisor()) {
|
|
@@ -739665,7 +739745,7 @@ if (false) {}
|
|
|
739665
739745
|
async function main2() {
|
|
739666
739746
|
const args = process.argv.slice(2);
|
|
739667
739747
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
739668
|
-
console.log(`${"1.
|
|
739748
|
+
console.log(`${"1.56.1"} (UR-Nexus)`);
|
|
739669
739749
|
return;
|
|
739670
739750
|
}
|
|
739671
739751
|
if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {
|
package/documentation/index.html
CHANGED
|
@@ -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.
|
|
48
|
+
<p class="eyebrow">Version 1.56.1</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>
|
|
@@ -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.
|
|
5
|
+
"version": "1.56.1",
|
|
6
6
|
"publisher": "ur-nexus",
|
|
7
7
|
"engines": {
|
|
8
8
|
"vscode": "^1.92.0"
|
package/package.json
CHANGED