ur-agent 1.48.0 → 1.49.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/dist/cli.js +240 -180
- package/docs/AGENT_FEATURES.md +13 -0
- package/docs/VALIDATION.md +1 -1
- package/documentation/index.html +1 -1
- package/extensions/jetbrains-ur/build.gradle.kts +1 -1
- package/extensions/vscode-ur-inline-diffs/package.json +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -75079,7 +75079,7 @@ var init_auth = __esm(() => {
|
|
|
75079
75079
|
|
|
75080
75080
|
// src/utils/userAgent.ts
|
|
75081
75081
|
function getURCodeUserAgent() {
|
|
75082
|
-
return `ur/${"1.
|
|
75082
|
+
return `ur/${"1.49.0"}`;
|
|
75083
75083
|
}
|
|
75084
75084
|
|
|
75085
75085
|
// src/utils/workloadContext.ts
|
|
@@ -75101,7 +75101,7 @@ function getUserAgent() {
|
|
|
75101
75101
|
const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
|
|
75102
75102
|
const workload = getWorkload();
|
|
75103
75103
|
const workloadSuffix = workload ? `, workload/${workload}` : "";
|
|
75104
|
-
return `ur-cli/${"1.
|
|
75104
|
+
return `ur-cli/${"1.49.0"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
|
|
75105
75105
|
}
|
|
75106
75106
|
function getMCPUserAgent() {
|
|
75107
75107
|
const parts = [];
|
|
@@ -75115,7 +75115,7 @@ function getMCPUserAgent() {
|
|
|
75115
75115
|
parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
|
|
75116
75116
|
}
|
|
75117
75117
|
const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
|
|
75118
|
-
return `ur/${"1.
|
|
75118
|
+
return `ur/${"1.49.0"}${suffix}`;
|
|
75119
75119
|
}
|
|
75120
75120
|
function getWebFetchUserAgent() {
|
|
75121
75121
|
return `UR-User (${getURCodeUserAgent()})`;
|
|
@@ -75253,7 +75253,7 @@ var init_user = __esm(() => {
|
|
|
75253
75253
|
deviceId,
|
|
75254
75254
|
sessionId: getSessionId(),
|
|
75255
75255
|
email: getEmail(),
|
|
75256
|
-
appVersion: "1.
|
|
75256
|
+
appVersion: "1.49.0",
|
|
75257
75257
|
platform: getHostPlatformForAnalytics(),
|
|
75258
75258
|
organizationUuid,
|
|
75259
75259
|
accountUuid,
|
|
@@ -83453,7 +83453,7 @@ var init_metadata = __esm(() => {
|
|
|
83453
83453
|
COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
|
|
83454
83454
|
WHITESPACE_REGEX = /\s+/;
|
|
83455
83455
|
getVersionBase = memoize_default(() => {
|
|
83456
|
-
const match = "1.
|
|
83456
|
+
const match = "1.49.0".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
|
|
83457
83457
|
return match ? match[0] : undefined;
|
|
83458
83458
|
});
|
|
83459
83459
|
buildEnvContext = memoize_default(async () => {
|
|
@@ -83493,7 +83493,7 @@ var init_metadata = __esm(() => {
|
|
|
83493
83493
|
isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
|
|
83494
83494
|
isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
|
|
83495
83495
|
isURAiAuth: isURAISubscriber(),
|
|
83496
|
-
version: "1.
|
|
83496
|
+
version: "1.49.0",
|
|
83497
83497
|
versionBase: getVersionBase(),
|
|
83498
83498
|
buildTime: "",
|
|
83499
83499
|
deploymentEnvironment: env2.detectDeploymentEnvironment(),
|
|
@@ -84163,7 +84163,7 @@ function initialize1PEventLogging() {
|
|
|
84163
84163
|
const platform2 = getPlatform();
|
|
84164
84164
|
const attributes = {
|
|
84165
84165
|
[import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
|
|
84166
|
-
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.
|
|
84166
|
+
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.49.0"
|
|
84167
84167
|
};
|
|
84168
84168
|
if (platform2 === "wsl") {
|
|
84169
84169
|
const wslVersion = getWslVersion();
|
|
@@ -84191,7 +84191,7 @@ function initialize1PEventLogging() {
|
|
|
84191
84191
|
})
|
|
84192
84192
|
]
|
|
84193
84193
|
});
|
|
84194
|
-
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.
|
|
84194
|
+
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.49.0");
|
|
84195
84195
|
}
|
|
84196
84196
|
async function reinitialize1PEventLoggingIfConfigChanged() {
|
|
84197
84197
|
if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
|
|
@@ -93709,6 +93709,62 @@ var init_a2aV1 = __esm(() => {
|
|
|
93709
93709
|
};
|
|
93710
93710
|
});
|
|
93711
93711
|
|
|
93712
|
+
// src/services/agents/a2aCardSignature.ts
|
|
93713
|
+
import {
|
|
93714
|
+
createHash as createHash8,
|
|
93715
|
+
createPrivateKey,
|
|
93716
|
+
createPublicKey,
|
|
93717
|
+
generateKeyPairSync,
|
|
93718
|
+
sign as cryptoSign,
|
|
93719
|
+
verify as cryptoVerify
|
|
93720
|
+
} from "crypto";
|
|
93721
|
+
function base64url3(value) {
|
|
93722
|
+
return (typeof value === "string" ? Buffer.from(value, "utf8") : value).toString("base64url");
|
|
93723
|
+
}
|
|
93724
|
+
function canonicalizeJson(value) {
|
|
93725
|
+
if (value === null)
|
|
93726
|
+
return "null";
|
|
93727
|
+
if (typeof value === "boolean")
|
|
93728
|
+
return value ? "true" : "false";
|
|
93729
|
+
if (typeof value === "number") {
|
|
93730
|
+
if (!Number.isFinite(value)) {
|
|
93731
|
+
throw new Error("cannot canonicalize a non-finite number");
|
|
93732
|
+
}
|
|
93733
|
+
return JSON.stringify(value);
|
|
93734
|
+
}
|
|
93735
|
+
if (typeof value === "string")
|
|
93736
|
+
return JSON.stringify(value);
|
|
93737
|
+
if (Array.isArray(value)) {
|
|
93738
|
+
return `[${value.map((entry) => canonicalizeJson(entry === undefined ? null : entry)).join(",")}]`;
|
|
93739
|
+
}
|
|
93740
|
+
if (typeof value === "object") {
|
|
93741
|
+
const source = value;
|
|
93742
|
+
const keys2 = Object.keys(source).filter((key) => source[key] !== undefined).sort();
|
|
93743
|
+
const members = keys2.map((key) => `${JSON.stringify(key)}:${canonicalizeJson(source[key])}`);
|
|
93744
|
+
return `{${members.join(",")}}`;
|
|
93745
|
+
}
|
|
93746
|
+
throw new Error(`cannot canonicalize value of type ${typeof value}`);
|
|
93747
|
+
}
|
|
93748
|
+
function signingPayload(card) {
|
|
93749
|
+
const { signatures: _signatures, ...rest } = card;
|
|
93750
|
+
return base64url3(canonicalizeJson(rest));
|
|
93751
|
+
}
|
|
93752
|
+
function signAgentCard(card, key) {
|
|
93753
|
+
const privateKey = createPrivateKey(key.privateKeyPem);
|
|
93754
|
+
if (privateKey.asymmetricKeyType !== "ed25519") {
|
|
93755
|
+
throw new Error("Agent Card signing requires an Ed25519 private key");
|
|
93756
|
+
}
|
|
93757
|
+
const header = { alg: A2A_CARD_SIGNATURE_ALG };
|
|
93758
|
+
if (key.kid)
|
|
93759
|
+
header.kid = key.kid;
|
|
93760
|
+
const protectedHeader = base64url3(canonicalizeJson(header));
|
|
93761
|
+
const signingInput = `${protectedHeader}.${signingPayload(card)}`;
|
|
93762
|
+
const signature = cryptoSign(null, Buffer.from(signingInput, "utf8"), privateKey);
|
|
93763
|
+
return { protected: protectedHeader, signature: signature.toString("base64url") };
|
|
93764
|
+
}
|
|
93765
|
+
var A2A_CARD_SIGNATURE_ALG = "EdDSA";
|
|
93766
|
+
var init_a2aCardSignature = () => {};
|
|
93767
|
+
|
|
93712
93768
|
// src/services/agents/trends.ts
|
|
93713
93769
|
var exports_trends = {};
|
|
93714
93770
|
__export(exports_trends, {
|
|
@@ -93853,7 +93909,7 @@ function buildA2AV1AgentCard(options = {}) {
|
|
|
93853
93909
|
securityRequirements.push({ schemes: { delegation: [] } });
|
|
93854
93910
|
}
|
|
93855
93911
|
const legacy = buildA2AAgentCard(options);
|
|
93856
|
-
|
|
93912
|
+
const card = {
|
|
93857
93913
|
name: legacy.name,
|
|
93858
93914
|
description: legacy.description,
|
|
93859
93915
|
supportedInterfaces: [
|
|
@@ -93904,6 +93960,9 @@ function buildA2AV1AgentCard(options = {}) {
|
|
|
93904
93960
|
})),
|
|
93905
93961
|
signatures: []
|
|
93906
93962
|
};
|
|
93963
|
+
if (!options.signingKey)
|
|
93964
|
+
return card;
|
|
93965
|
+
return { ...card, signatures: [signAgentCard(card, options.signingKey)] };
|
|
93907
93966
|
}
|
|
93908
93967
|
function buildAgentTrendReport(options = {}) {
|
|
93909
93968
|
return {
|
|
@@ -93948,8 +94007,9 @@ function formatAgentTrendReport(report = buildAgentTrendReport()) {
|
|
|
93948
94007
|
function formatA2AAgentCard(options = {}, pretty = true) {
|
|
93949
94008
|
return JSON.stringify(buildA2AAgentCard(options), null, pretty ? 2 : 0);
|
|
93950
94009
|
}
|
|
93951
|
-
var urVersion = "1.
|
|
94010
|
+
var urVersion = "1.49.0", researchSnapshotDate = "2026-07-15", coverage, priorityRoadmap;
|
|
93952
94011
|
var init_trends = __esm(() => {
|
|
94012
|
+
init_a2aCardSignature();
|
|
93953
94013
|
coverage = [
|
|
93954
94014
|
{
|
|
93955
94015
|
id: "local-runtime",
|
|
@@ -94357,7 +94417,7 @@ __export(exports_a2aServer, {
|
|
|
94357
94417
|
handleA2ARequest: () => handleA2ARequest,
|
|
94358
94418
|
authorizeRequest: () => authorizeRequest
|
|
94359
94419
|
});
|
|
94360
|
-
import { createHash as
|
|
94420
|
+
import { createHash as createHash9, randomUUID as randomUUID18 } from "crypto";
|
|
94361
94421
|
import {
|
|
94362
94422
|
existsSync as existsSync12,
|
|
94363
94423
|
mkdirSync as mkdirSync11,
|
|
@@ -94420,7 +94480,7 @@ function a2aV1RestResponse(status, body) {
|
|
|
94420
94480
|
}
|
|
94421
94481
|
function agentCardResponse(card, version2, request) {
|
|
94422
94482
|
const payload = JSON.stringify(card, null, 2);
|
|
94423
|
-
const etag = `"${
|
|
94483
|
+
const etag = `"${createHash9("sha256").update(payload).digest("base64url")}"`;
|
|
94424
94484
|
const notModified = request?.headers.get("if-none-match") === etag;
|
|
94425
94485
|
return new Response(notModified ? null : payload, {
|
|
94426
94486
|
status: notModified ? 304 : 200,
|
|
@@ -96464,7 +96524,7 @@ var init_config2 = __esm(() => {
|
|
|
96464
96524
|
});
|
|
96465
96525
|
|
|
96466
96526
|
// src/services/analytics/datadog.ts
|
|
96467
|
-
import { createHash as
|
|
96527
|
+
import { createHash as createHash10 } from "crypto";
|
|
96468
96528
|
function camelToSnakeCase(str) {
|
|
96469
96529
|
return str.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`);
|
|
96470
96530
|
}
|
|
@@ -96672,7 +96732,7 @@ var init_datadog = __esm(() => {
|
|
|
96672
96732
|
});
|
|
96673
96733
|
getUserBucket = memoize_default(() => {
|
|
96674
96734
|
const userId = getOrCreateUserID();
|
|
96675
|
-
const hash2 =
|
|
96735
|
+
const hash2 = createHash10("sha256").update(userId).digest("hex");
|
|
96676
96736
|
return parseInt(hash2.slice(0, 8), 16) % NUM_USER_BUCKETS;
|
|
96677
96737
|
});
|
|
96678
96738
|
});
|
|
@@ -96748,7 +96808,7 @@ function getAttributionHeader(fingerprint) {
|
|
|
96748
96808
|
if (!isAttributionHeaderEnabled()) {
|
|
96749
96809
|
return "";
|
|
96750
96810
|
}
|
|
96751
|
-
const version2 = `${"1.
|
|
96811
|
+
const version2 = `${"1.49.0"}.${fingerprint}`;
|
|
96752
96812
|
const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
|
|
96753
96813
|
const cch = "";
|
|
96754
96814
|
const workload = getWorkload();
|
|
@@ -143035,7 +143095,7 @@ var init_systemDirectories = __esm(() => {
|
|
|
143035
143095
|
});
|
|
143036
143096
|
|
|
143037
143097
|
// src/utils/plugins/mcpbHandler.ts
|
|
143038
|
-
import { createHash as
|
|
143098
|
+
import { createHash as createHash11 } from "crypto";
|
|
143039
143099
|
import { chmod, writeFile as writeFile4 } from "fs/promises";
|
|
143040
143100
|
import { dirname as dirname25, join as join46 } from "path";
|
|
143041
143101
|
function manifestAuthorName(manifest) {
|
|
@@ -143055,13 +143115,13 @@ function isUrl2(source) {
|
|
|
143055
143115
|
return source.startsWith("http://") || source.startsWith("https://");
|
|
143056
143116
|
}
|
|
143057
143117
|
function generateContentHash(data) {
|
|
143058
|
-
return
|
|
143118
|
+
return createHash11("sha256").update(data).digest("hex").substring(0, 16);
|
|
143059
143119
|
}
|
|
143060
143120
|
function getMcpbCacheDir(pluginPath) {
|
|
143061
143121
|
return join46(pluginPath, ".mcpb-cache");
|
|
143062
143122
|
}
|
|
143063
143123
|
function getMetadataPath(cacheDir, source) {
|
|
143064
|
-
const sourceHash =
|
|
143124
|
+
const sourceHash = createHash11("md5").update(source).digest("hex").substring(0, 8);
|
|
143065
143125
|
return join46(cacheDir, `${sourceHash}.metadata.json`);
|
|
143066
143126
|
}
|
|
143067
143127
|
function serverSecretsKey(pluginId, serverName) {
|
|
@@ -143409,7 +143469,7 @@ async function loadMcpbFile(source, pluginPath, pluginId, onProgress, providedUs
|
|
|
143409
143469
|
let mcpbData;
|
|
143410
143470
|
let mcpbFilePath;
|
|
143411
143471
|
if (isUrl2(source)) {
|
|
143412
|
-
const sourceHash =
|
|
143472
|
+
const sourceHash = createHash11("md5").update(source).digest("hex").substring(0, 8);
|
|
143413
143473
|
mcpbFilePath = join46(cacheDir, `${sourceHash}.mcpb`);
|
|
143414
143474
|
mcpbData = await downloadMcpb(source, mcpbFilePath, onProgress);
|
|
143415
143475
|
} else {
|
|
@@ -154433,7 +154493,7 @@ var init_projectSafety = __esm(() => {
|
|
|
154433
154493
|
function getInstruments() {
|
|
154434
154494
|
if (instruments)
|
|
154435
154495
|
return instruments;
|
|
154436
|
-
const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.
|
|
154496
|
+
const meter = import_api10.metrics.getMeter("ur-agent.gen_ai", "1.49.0");
|
|
154437
154497
|
instruments = {
|
|
154438
154498
|
operationDuration: meter.createHistogram("gen_ai.client.operation.duration", {
|
|
154439
154499
|
description: "GenAI operation duration.",
|
|
@@ -154531,7 +154591,7 @@ function genAiAgentAttributes() {
|
|
|
154531
154591
|
"gen_ai.operation.name": GEN_AI_OPERATION_INVOKE_AGENT,
|
|
154532
154592
|
"gen_ai.provider.name": "ur",
|
|
154533
154593
|
"gen_ai.agent.name": "UR-Nexus",
|
|
154534
|
-
"gen_ai.agent.version": "1.
|
|
154594
|
+
"gen_ai.agent.version": "1.49.0"
|
|
154535
154595
|
};
|
|
154536
154596
|
}
|
|
154537
154597
|
function genAiWorkflowAttributes(workflowName) {
|
|
@@ -154547,7 +154607,7 @@ function genAiWorkflowAttributes(workflowName) {
|
|
|
154547
154607
|
function startGenAiWorkflowSpan(workflowName) {
|
|
154548
154608
|
const attributes = genAiWorkflowAttributes(workflowName);
|
|
154549
154609
|
const name = typeof attributes["gen_ai.workflow.name"] === "string" ? `invoke_workflow ${attributes["gen_ai.workflow.name"]}` : GEN_AI_OPERATION_INVOKE_WORKFLOW;
|
|
154550
|
-
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.
|
|
154610
|
+
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.49.0").startSpan(name, { kind: import_api10.SpanKind.INTERNAL, attributes });
|
|
154551
154611
|
}
|
|
154552
154612
|
function endGenAiWorkflowSpan(span, options2 = {}) {
|
|
154553
154613
|
try {
|
|
@@ -154585,7 +154645,7 @@ function startGenAiMemorySpan(operation, options2 = {}) {
|
|
|
154585
154645
|
if (options2.recordCount !== undefined && Number.isInteger(options2.recordCount) && options2.recordCount >= 0) {
|
|
154586
154646
|
attributes["gen_ai.memory.record.count"] = options2.recordCount;
|
|
154587
154647
|
}
|
|
154588
|
-
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.
|
|
154648
|
+
return import_api10.trace.getTracer("ur-agent.gen_ai", "1.49.0").startSpan(operation, { kind: import_api10.SpanKind.INTERNAL, attributes });
|
|
154589
154649
|
}
|
|
154590
154650
|
function endGenAiMemorySpan(span, options2 = {}) {
|
|
154591
154651
|
try {
|
|
@@ -154701,7 +154761,7 @@ var init_genAiSemantics = __esm(() => {
|
|
|
154701
154761
|
});
|
|
154702
154762
|
|
|
154703
154763
|
// src/services/context/memoryCitations.ts
|
|
154704
|
-
import { createHash as
|
|
154764
|
+
import { createHash as createHash12 } from "crypto";
|
|
154705
154765
|
import {
|
|
154706
154766
|
existsSync as existsSync19,
|
|
154707
154767
|
lstatSync as lstatSync6,
|
|
@@ -154710,7 +154770,7 @@ import {
|
|
|
154710
154770
|
} from "fs";
|
|
154711
154771
|
import { relative as relative10, resolve as resolve23 } from "path";
|
|
154712
154772
|
function digest(value) {
|
|
154713
|
-
return `sha256:${
|
|
154773
|
+
return `sha256:${createHash12("sha256").update(value).digest("hex")}`;
|
|
154714
154774
|
}
|
|
154715
154775
|
function validDate3(value) {
|
|
154716
154776
|
return typeof value === "string" && Number.isFinite(Date.parse(value));
|
|
@@ -155023,7 +155083,7 @@ import {
|
|
|
155023
155083
|
writeSync as writeSync4,
|
|
155024
155084
|
writeFileSync as writeFileSync14
|
|
155025
155085
|
} from "fs";
|
|
155026
|
-
import { createHash as
|
|
155086
|
+
import { createHash as createHash13, randomUUID as randomUUID19 } from "crypto";
|
|
155027
155087
|
import { dirname as dirname28, join as join52, relative as relative11 } from "path";
|
|
155028
155088
|
function contextDir(cwd2) {
|
|
155029
155089
|
return join52(cwd2, ".ur", "context");
|
|
@@ -155184,7 +155244,7 @@ function formatArchitectureSummary(manifest, cwd2) {
|
|
|
155184
155244
|
`);
|
|
155185
155245
|
}
|
|
155186
155246
|
function hash2(value) {
|
|
155187
|
-
return
|
|
155247
|
+
return createHash13("sha256").update(value).digest("hex");
|
|
155188
155248
|
}
|
|
155189
155249
|
function stableJson(value) {
|
|
155190
155250
|
if (Array.isArray(value))
|
|
@@ -155775,7 +155835,7 @@ var init_projectContextManifest = __esm(() => {
|
|
|
155775
155835
|
this.verification = verification;
|
|
155776
155836
|
}
|
|
155777
155837
|
};
|
|
155778
|
-
TASK_MEMORY_GENESIS =
|
|
155838
|
+
TASK_MEMORY_GENESIS = createHash13("sha256").update("ur-task-memory-genesis-v2").digest("hex");
|
|
155779
155839
|
TASK_MEMORY_STATUSES = new Set([
|
|
155780
155840
|
"proposed",
|
|
155781
155841
|
"accepted",
|
|
@@ -155797,11 +155857,11 @@ var init_projectContextManifest = __esm(() => {
|
|
|
155797
155857
|
});
|
|
155798
155858
|
|
|
155799
155859
|
// src/services/api/dumpPrompts.ts
|
|
155800
|
-
import { createHash as
|
|
155860
|
+
import { createHash as createHash14 } from "crypto";
|
|
155801
155861
|
import { promises as fs2 } from "fs";
|
|
155802
155862
|
import { dirname as dirname29, join as join53 } from "path";
|
|
155803
155863
|
function hashString3(str) {
|
|
155804
|
-
return
|
|
155864
|
+
return createHash14("sha256").update(str).digest("hex");
|
|
155805
155865
|
}
|
|
155806
155866
|
function clearDumpState(agentIdOrSessionId) {
|
|
155807
155867
|
dumpState.delete(agentIdOrSessionId);
|
|
@@ -156251,7 +156311,7 @@ var init_ledger = __esm(() => {
|
|
|
156251
156311
|
});
|
|
156252
156312
|
|
|
156253
156313
|
// src/services/verifier/loopDetector.ts
|
|
156254
|
-
import { createHash as
|
|
156314
|
+
import { createHash as createHash15 } from "crypto";
|
|
156255
156315
|
|
|
156256
156316
|
class LoopDetector {
|
|
156257
156317
|
recent = new Map;
|
|
@@ -156292,7 +156352,7 @@ class LoopDetector {
|
|
|
156292
156352
|
function hashCall(toolName, input) {
|
|
156293
156353
|
const normalized = normalize8(input);
|
|
156294
156354
|
const payload = `${toolName}\x00${JSON.stringify(normalized)}`;
|
|
156295
|
-
return
|
|
156355
|
+
return createHash15("sha1").update(payload).digest("hex");
|
|
156296
156356
|
}
|
|
156297
156357
|
function normalize8(value) {
|
|
156298
156358
|
if (value === null || value === undefined)
|
|
@@ -206104,7 +206164,7 @@ function getTelemetryAttributes() {
|
|
|
206104
206164
|
attributes["session.id"] = sessionId;
|
|
206105
206165
|
}
|
|
206106
206166
|
if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
|
|
206107
|
-
attributes["app.version"] = "1.
|
|
206167
|
+
attributes["app.version"] = "1.49.0";
|
|
206108
206168
|
}
|
|
206109
206169
|
const oauthAccount = getOauthAccountInfo();
|
|
206110
206170
|
if (oauthAccount) {
|
|
@@ -209341,7 +209401,7 @@ __export(exports_commitAttribution, {
|
|
|
209341
209401
|
buildSurfaceKey: () => buildSurfaceKey,
|
|
209342
209402
|
attributionRestoreStateFromLog: () => attributionRestoreStateFromLog
|
|
209343
209403
|
});
|
|
209344
|
-
import { createHash as
|
|
209404
|
+
import { createHash as createHash16, randomUUID as randomUUID20 } from "crypto";
|
|
209345
209405
|
import { stat as stat15 } from "fs/promises";
|
|
209346
209406
|
import { isAbsolute as isAbsolute14, join as join57, relative as relative13, sep as sep12 } from "path";
|
|
209347
209407
|
function getAttributionRepoRoot() {
|
|
@@ -209374,7 +209434,7 @@ function buildSurfaceKey(surface, model) {
|
|
|
209374
209434
|
return `${surface}/${getCanonicalName(model)}`;
|
|
209375
209435
|
}
|
|
209376
209436
|
function computeContentHash(content) {
|
|
209377
|
-
return
|
|
209437
|
+
return createHash16("sha256").update(content).digest("hex");
|
|
209378
209438
|
}
|
|
209379
209439
|
function normalizeFilePath(filePath) {
|
|
209380
209440
|
const fs3 = getFsImplementation();
|
|
@@ -247679,7 +247739,7 @@ var init_config3 = __esm(() => {
|
|
|
247679
247739
|
});
|
|
247680
247740
|
|
|
247681
247741
|
// src/services/mcp/utils.ts
|
|
247682
|
-
import { createHash as
|
|
247742
|
+
import { createHash as createHash17 } from "crypto";
|
|
247683
247743
|
import { join as join64 } from "path";
|
|
247684
247744
|
function filterToolsByServer(tools, serverName) {
|
|
247685
247745
|
const prefix = `mcp__${normalizeNameForMCP(serverName)}__`;
|
|
@@ -247719,7 +247779,7 @@ function hashMcpConfig(config2) {
|
|
|
247719
247779
|
}
|
|
247720
247780
|
return v;
|
|
247721
247781
|
});
|
|
247722
|
-
return
|
|
247782
|
+
return createHash17("sha256").update(stable).digest("hex").slice(0, 16);
|
|
247723
247783
|
}
|
|
247724
247784
|
function excludeStalePluginClients(mcp, configs) {
|
|
247725
247785
|
const stale = mcp.clients.filter((c4) => {
|
|
@@ -248468,7 +248528,7 @@ var init_xaaIdpLogin = __esm(() => {
|
|
|
248468
248528
|
});
|
|
248469
248529
|
|
|
248470
248530
|
// src/services/mcp/auth.ts
|
|
248471
|
-
import { createHash as
|
|
248531
|
+
import { createHash as createHash18, randomBytes as randomBytes5, randomUUID as randomUUID23 } from "crypto";
|
|
248472
248532
|
import { mkdir as mkdir7 } from "fs/promises";
|
|
248473
248533
|
import { createServer as createServer3 } from "http";
|
|
248474
248534
|
import { join as join65 } from "path";
|
|
@@ -248582,7 +248642,7 @@ function getServerKey(serverName, serverConfig) {
|
|
|
248582
248642
|
url: serverConfig.url,
|
|
248583
248643
|
headers: serverConfig.headers || {}
|
|
248584
248644
|
});
|
|
248585
|
-
const hash3 =
|
|
248645
|
+
const hash3 = createHash18("sha256").update(configJson).digest("hex").substring(0, 16);
|
|
248586
248646
|
return `${serverName}|${hash3}`;
|
|
248587
248647
|
}
|
|
248588
248648
|
function hasMcpDiscoveryButNoToken(serverName, serverConfig) {
|
|
@@ -252355,7 +252415,7 @@ function getInstallationEnv() {
|
|
|
252355
252415
|
return;
|
|
252356
252416
|
}
|
|
252357
252417
|
function getURCodeVersion() {
|
|
252358
|
-
return "1.
|
|
252418
|
+
return "1.49.0";
|
|
252359
252419
|
}
|
|
252360
252420
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
252361
252421
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -259686,7 +259746,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
259686
259746
|
const client2 = new Client({
|
|
259687
259747
|
name: "ur",
|
|
259688
259748
|
title: "UR",
|
|
259689
|
-
version: "1.
|
|
259749
|
+
version: "1.49.0",
|
|
259690
259750
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
259691
259751
|
websiteUrl: PRODUCT_URL
|
|
259692
259752
|
}, {
|
|
@@ -260046,7 +260106,7 @@ var init_client5 = __esm(() => {
|
|
|
260046
260106
|
const client2 = new Client({
|
|
260047
260107
|
name: "ur",
|
|
260048
260108
|
title: "UR",
|
|
260049
|
-
version: "1.
|
|
260109
|
+
version: "1.49.0",
|
|
260050
260110
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
260051
260111
|
websiteUrl: PRODUCT_URL
|
|
260052
260112
|
}, {
|
|
@@ -264327,7 +264387,7 @@ var init_types6 = __esm(() => {
|
|
|
264327
264387
|
});
|
|
264328
264388
|
|
|
264329
264389
|
// src/services/policyLimits/index.ts
|
|
264330
|
-
import { createHash as
|
|
264390
|
+
import { createHash as createHash19 } from "crypto";
|
|
264331
264391
|
import { readFileSync as fsReadFileSync } from "fs";
|
|
264332
264392
|
import { unlink as unlink7, writeFile as writeFile10 } from "fs/promises";
|
|
264333
264393
|
import { join as join74 } from "path";
|
|
@@ -264373,7 +264433,7 @@ function sortKeysDeep2(obj) {
|
|
|
264373
264433
|
function computeChecksum(restrictions) {
|
|
264374
264434
|
const sorted = sortKeysDeep2(restrictions);
|
|
264375
264435
|
const normalized = jsonStringify(sorted);
|
|
264376
|
-
const hash3 =
|
|
264436
|
+
const hash3 = createHash19("sha256").update(normalized).digest("hex");
|
|
264377
264437
|
return `sha256:${hash3}`;
|
|
264378
264438
|
}
|
|
264379
264439
|
function isPolicyLimitsEligible() {
|
|
@@ -266145,7 +266205,7 @@ var init_types7 = __esm(() => {
|
|
|
266145
266205
|
});
|
|
266146
266206
|
|
|
266147
266207
|
// src/services/remoteManagedSettings/index.ts
|
|
266148
|
-
import { createHash as
|
|
266208
|
+
import { createHash as createHash20 } from "crypto";
|
|
266149
266209
|
import { open as open7, unlink as unlink8 } from "fs/promises";
|
|
266150
266210
|
function initializeRemoteManagedSettingsLoadingPromise() {
|
|
266151
266211
|
if (loadingCompletePromise2) {
|
|
@@ -266183,7 +266243,7 @@ function sortKeysDeep3(obj) {
|
|
|
266183
266243
|
function computeChecksumFromSettings(settings) {
|
|
266184
266244
|
const sorted = sortKeysDeep3(settings);
|
|
266185
266245
|
const normalized = jsonStringify(sorted);
|
|
266186
|
-
const hash3 =
|
|
266246
|
+
const hash3 = createHash20("sha256").update(normalized).digest("hex");
|
|
266187
266247
|
return `sha256:${hash3}`;
|
|
266188
266248
|
}
|
|
266189
266249
|
function isEligibleForRemoteManagedSettings() {
|
|
@@ -272647,7 +272707,7 @@ async function createRuntime() {
|
|
|
272647
272707
|
bootstrapTelemetry();
|
|
272648
272708
|
const resource = defaultResource().merge(detectResources({ detectors: [envDetector] })).merge(resourceFromAttributes({
|
|
272649
272709
|
[import_semantic_conventions7.ATTR_SERVICE_NAME]: "ur-agent",
|
|
272650
|
-
[import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.
|
|
272710
|
+
[import_semantic_conventions7.ATTR_SERVICE_VERSION]: "1.49.0"
|
|
272651
272711
|
}));
|
|
272652
272712
|
const tracerProvider = exporters.traces.length > 0 ? new BasicTracerProvider({
|
|
272653
272713
|
resource,
|
|
@@ -272680,11 +272740,11 @@ async function createRuntime() {
|
|
|
272680
272740
|
setMeterProvider(meterProvider);
|
|
272681
272741
|
setLoggerProvider(loggerProvider);
|
|
272682
272742
|
if (meterProvider) {
|
|
272683
|
-
const meter = meterProvider.getMeter("ur-agent", "1.
|
|
272743
|
+
const meter = meterProvider.getMeter("ur-agent", "1.49.0");
|
|
272684
272744
|
setMeter(meter, (name, options2) => meter.createCounter(name, options2));
|
|
272685
272745
|
}
|
|
272686
272746
|
if (loggerProvider) {
|
|
272687
|
-
setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.
|
|
272747
|
+
setEventLogger(loggerProvider.getLogger("ur-agent.events", "1.49.0"));
|
|
272688
272748
|
}
|
|
272689
272749
|
if (!cleanupRegistered2) {
|
|
272690
272750
|
cleanupRegistered2 = true;
|
|
@@ -273014,7 +273074,7 @@ var init_auth_code_listener = __esm(() => {
|
|
|
273014
273074
|
});
|
|
273015
273075
|
|
|
273016
273076
|
// src/services/oauth/crypto.ts
|
|
273017
|
-
import { createHash as
|
|
273077
|
+
import { createHash as createHash21, randomBytes as randomBytes8 } from "crypto";
|
|
273018
273078
|
function base64URLEncode(buffer) {
|
|
273019
273079
|
return buffer.toString("base64").replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, "");
|
|
273020
273080
|
}
|
|
@@ -273022,7 +273082,7 @@ function generateCodeVerifier() {
|
|
|
273022
273082
|
return base64URLEncode(randomBytes8(32));
|
|
273023
273083
|
}
|
|
273024
273084
|
function generateCodeChallenge(verifier) {
|
|
273025
|
-
const hash3 =
|
|
273085
|
+
const hash3 = createHash21("sha256");
|
|
273026
273086
|
hash3.update(verifier);
|
|
273027
273087
|
return base64URLEncode(hash3.digest());
|
|
273028
273088
|
}
|
|
@@ -273346,9 +273406,9 @@ async function assertMinVersion() {
|
|
|
273346
273406
|
if (false) {}
|
|
273347
273407
|
try {
|
|
273348
273408
|
const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
|
|
273349
|
-
if (versionConfig.minVersion && lt("1.
|
|
273409
|
+
if (versionConfig.minVersion && lt("1.49.0", versionConfig.minVersion)) {
|
|
273350
273410
|
console.error(`
|
|
273351
|
-
It looks like your version of UR (${"1.
|
|
273411
|
+
It looks like your version of UR (${"1.49.0"}) needs an update.
|
|
273352
273412
|
A newer version (${versionConfig.minVersion} or higher) is required to continue.
|
|
273353
273413
|
|
|
273354
273414
|
To update, please run:
|
|
@@ -273564,7 +273624,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
273564
273624
|
logError2(new AutoUpdaterError("Another process is currently installing an update"));
|
|
273565
273625
|
logEvent("tengu_auto_updater_lock_contention", {
|
|
273566
273626
|
pid: process.pid,
|
|
273567
|
-
currentVersion: "1.
|
|
273627
|
+
currentVersion: "1.49.0"
|
|
273568
273628
|
});
|
|
273569
273629
|
return "in_progress";
|
|
273570
273630
|
}
|
|
@@ -273573,7 +273633,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
273573
273633
|
if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
|
|
273574
273634
|
logError2(new Error("Windows NPM detected in WSL environment"));
|
|
273575
273635
|
logEvent("tengu_auto_updater_windows_npm_in_wsl", {
|
|
273576
|
-
currentVersion: "1.
|
|
273636
|
+
currentVersion: "1.49.0"
|
|
273577
273637
|
});
|
|
273578
273638
|
console.error(`
|
|
273579
273639
|
Error: Windows NPM detected in WSL
|
|
@@ -274108,7 +274168,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
274108
274168
|
}
|
|
274109
274169
|
async function getDoctorDiagnostic() {
|
|
274110
274170
|
const installationType = await getCurrentInstallationType();
|
|
274111
|
-
const version2 = typeof MACRO !== "undefined" ? "1.
|
|
274171
|
+
const version2 = typeof MACRO !== "undefined" ? "1.49.0" : "unknown";
|
|
274112
274172
|
const installationPath = await getInstallationPath();
|
|
274113
274173
|
const invokedBinary = getInvokedBinary();
|
|
274114
274174
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -274226,7 +274286,7 @@ function getUserBinDir(options2) {
|
|
|
274226
274286
|
var init_xdg = () => {};
|
|
274227
274287
|
|
|
274228
274288
|
// src/utils/nativeInstaller/download.ts
|
|
274229
|
-
import { createHash as
|
|
274289
|
+
import { createHash as createHash22 } from "crypto";
|
|
274230
274290
|
import { chmod as chmod4, writeFile as writeFile13 } from "fs/promises";
|
|
274231
274291
|
import { join as join80 } from "path";
|
|
274232
274292
|
async function getLatestVersionFromArtifactory(tag2 = "latest") {
|
|
@@ -274412,7 +274472,7 @@ async function downloadAndVerifyBinary(binaryUrl, expectedChecksum, binaryPath,
|
|
|
274412
274472
|
...requestConfig
|
|
274413
274473
|
});
|
|
274414
274474
|
clearStallTimer();
|
|
274415
|
-
const hash3 =
|
|
274475
|
+
const hash3 = createHash22("sha256");
|
|
274416
274476
|
hash3.update(response.data);
|
|
274417
274477
|
const actualChecksum = hash3.digest("hex");
|
|
274418
274478
|
if (actualChecksum !== expectedChecksum) {
|
|
@@ -275043,8 +275103,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
275043
275103
|
const maxVersion = await getMaxVersion();
|
|
275044
275104
|
if (maxVersion && gt(version2, maxVersion)) {
|
|
275045
275105
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
|
|
275046
|
-
if (gte("1.
|
|
275047
|
-
logForDebugging(`Native installer: current version ${"1.
|
|
275106
|
+
if (gte("1.49.0", maxVersion)) {
|
|
275107
|
+
logForDebugging(`Native installer: current version ${"1.49.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
275048
275108
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
275049
275109
|
latency_ms: Date.now() - startTime,
|
|
275050
275110
|
max_version: maxVersion,
|
|
@@ -275055,7 +275115,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
275055
275115
|
version2 = maxVersion;
|
|
275056
275116
|
}
|
|
275057
275117
|
}
|
|
275058
|
-
if (!forceReinstall && version2 === "1.
|
|
275118
|
+
if (!forceReinstall && version2 === "1.49.0" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
|
|
275059
275119
|
logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
|
|
275060
275120
|
logEvent("tengu_native_update_complete", {
|
|
275061
275121
|
latency_ms: Date.now() - startTime,
|
|
@@ -295756,11 +295816,11 @@ var init_skillUsageTracking = __esm(() => {
|
|
|
295756
295816
|
});
|
|
295757
295817
|
|
|
295758
295818
|
// src/utils/telemetry/pluginTelemetry.ts
|
|
295759
|
-
import { createHash as
|
|
295819
|
+
import { createHash as createHash23 } from "crypto";
|
|
295760
295820
|
import { sep as sep14 } from "path";
|
|
295761
295821
|
function hashPluginId(name, marketplace) {
|
|
295762
295822
|
const key = marketplace ? `${name}@${marketplace.toLowerCase()}` : name;
|
|
295763
|
-
return
|
|
295823
|
+
return createHash23("sha256").update(key + PLUGIN_ID_HASH_SALT).digest("hex").slice(0, 16);
|
|
295764
295824
|
}
|
|
295765
295825
|
function getTelemetryPluginScope(name, marketplace, managedNames) {
|
|
295766
295826
|
if (marketplace === BUILTIN_MARKETPLACE_NAME2)
|
|
@@ -298154,7 +298214,7 @@ var init_sessionIngress = __esm(() => {
|
|
|
298154
298214
|
});
|
|
298155
298215
|
|
|
298156
298216
|
// src/utils/fileHistory.ts
|
|
298157
|
-
import { createHash as
|
|
298217
|
+
import { createHash as createHash24 } from "crypto";
|
|
298158
298218
|
import {
|
|
298159
298219
|
chmod as chmod6,
|
|
298160
298220
|
copyFile as copyFile3,
|
|
@@ -298578,7 +298638,7 @@ async function computeDiffStatsForFile(originalFile, backupFileName) {
|
|
|
298578
298638
|
};
|
|
298579
298639
|
}
|
|
298580
298640
|
function getBackupFileName(filePath, version2) {
|
|
298581
|
-
const fileNameHash =
|
|
298641
|
+
const fileNameHash = createHash24("sha256").update(filePath).digest("hex").slice(0, 16);
|
|
298582
298642
|
return `${fileNameHash}@v${version2}`;
|
|
298583
298643
|
}
|
|
298584
298644
|
function resolveBackupPath(backupFileName, sessionId) {
|
|
@@ -301184,11 +301244,11 @@ var init_filesApi = __esm(() => {
|
|
|
301184
301244
|
});
|
|
301185
301245
|
|
|
301186
301246
|
// src/utils/tempfile.ts
|
|
301187
|
-
import { createHash as
|
|
301247
|
+
import { createHash as createHash25, randomUUID as randomUUID29 } from "crypto";
|
|
301188
301248
|
import { tmpdir as tmpdir6 } from "os";
|
|
301189
301249
|
import { join as join91 } from "path";
|
|
301190
301250
|
function generateTempFilePath(prefix = "ur-prompt", extension = ".md", options2) {
|
|
301191
|
-
const id = options2?.contentHash ?
|
|
301251
|
+
const id = options2?.contentHash ? createHash25("sha256").update(options2.contentHash).digest("hex").slice(0, 16) : randomUUID29();
|
|
301192
301252
|
return join91(tmpdir6(), `${prefix}-${id}${extension}`);
|
|
301193
301253
|
}
|
|
301194
301254
|
var init_tempfile = () => {};
|
|
@@ -317108,16 +317168,16 @@ import {
|
|
|
317108
317168
|
writeFileSync as writeFileSync17
|
|
317109
317169
|
} from "fs";
|
|
317110
317170
|
import {
|
|
317111
|
-
createHash as
|
|
317112
|
-
createPrivateKey,
|
|
317113
|
-
createPublicKey,
|
|
317171
|
+
createHash as createHash26,
|
|
317172
|
+
createPrivateKey as createPrivateKey2,
|
|
317173
|
+
createPublicKey as createPublicKey2,
|
|
317114
317174
|
randomUUID as randomUUID33,
|
|
317115
317175
|
sign as sign2,
|
|
317116
317176
|
verify
|
|
317117
317177
|
} from "crypto";
|
|
317118
317178
|
import { basename as basename25, join as join95, relative as relative20, sep as sep18 } from "path";
|
|
317119
317179
|
function sha256(value) {
|
|
317120
|
-
return
|
|
317180
|
+
return createHash26("sha256").update(value).digest("hex");
|
|
317121
317181
|
}
|
|
317122
317182
|
function stableJson2(value) {
|
|
317123
317183
|
if (Array.isArray(value))
|
|
@@ -317288,7 +317348,7 @@ function canonicalSignaturePayload(input) {
|
|
|
317288
317348
|
}), "utf8");
|
|
317289
317349
|
}
|
|
317290
317350
|
function keyFingerprint(key) {
|
|
317291
|
-
const der =
|
|
317351
|
+
const der = createPublicKey2(key).export({ type: "spki", format: "der" });
|
|
317292
317352
|
return sha256(der);
|
|
317293
317353
|
}
|
|
317294
317354
|
function trustedSkillKeysPath() {
|
|
@@ -317313,7 +317373,7 @@ function loadTrustedSkillKeys(path13 = trustedSkillKeysPath()) {
|
|
|
317313
317373
|
if (!KEY_ID.test(keyId) || typeof value !== "string") {
|
|
317314
317374
|
throw new Error("Trusted skill key store contains an invalid key entry");
|
|
317315
317375
|
}
|
|
317316
|
-
|
|
317376
|
+
createPublicKey2(value);
|
|
317317
317377
|
keys2[keyId] = value;
|
|
317318
317378
|
}
|
|
317319
317379
|
return keys2;
|
|
@@ -317372,7 +317432,7 @@ function verifyManifest(skillDir, name, tree, permissionDigest, trustedKeys) {
|
|
|
317372
317432
|
if (signature.length !== 64) {
|
|
317373
317433
|
return { status: "invalid", ...base2, reason: "Ed25519 signature length is invalid" };
|
|
317374
317434
|
}
|
|
317375
|
-
const valid = verify(null, canonicalSignaturePayload(manifest),
|
|
317435
|
+
const valid = verify(null, canonicalSignaturePayload(manifest), createPublicKey2(candidate), signature);
|
|
317376
317436
|
if (!valid)
|
|
317377
317437
|
return { status: "invalid", ...base2, reason: "signature verification failed" };
|
|
317378
317438
|
return { status: trustedKey ? "verified" : "verified-untrusted", ...base2 };
|
|
@@ -317432,11 +317492,11 @@ function signSkillDirectory(options2) {
|
|
|
317432
317492
|
if (inspected.tree.hasSymlinks) {
|
|
317433
317493
|
throw new Error("Cannot sign a skill directory containing symlinks");
|
|
317434
317494
|
}
|
|
317435
|
-
const privateKey =
|
|
317495
|
+
const privateKey = createPrivateKey2(options2.privateKey);
|
|
317436
317496
|
if (privateKey.asymmetricKeyType !== "ed25519") {
|
|
317437
317497
|
throw new Error("Skill signing requires an Ed25519 private key");
|
|
317438
317498
|
}
|
|
317439
|
-
const publicKey =
|
|
317499
|
+
const publicKey = createPublicKey2(privateKey).export({
|
|
317440
317500
|
type: "spki",
|
|
317441
317501
|
format: "pem"
|
|
317442
317502
|
});
|
|
@@ -318398,12 +318458,12 @@ var init_diff2 = __esm(() => {
|
|
|
318398
318458
|
});
|
|
318399
318459
|
|
|
318400
318460
|
// src/utils/fileOperationAnalytics.ts
|
|
318401
|
-
import { createHash as
|
|
318461
|
+
import { createHash as createHash27 } from "crypto";
|
|
318402
318462
|
function hashFilePath(filePath) {
|
|
318403
|
-
return
|
|
318463
|
+
return createHash27("sha256").update(filePath).digest("hex").slice(0, 16);
|
|
318404
318464
|
}
|
|
318405
318465
|
function hashFileContent(content) {
|
|
318406
|
-
return
|
|
318466
|
+
return createHash27("sha256").update(content).digest("hex");
|
|
318407
318467
|
}
|
|
318408
318468
|
function logFileOperation(params) {
|
|
318409
318469
|
const metadata = {
|
|
@@ -329149,7 +329209,7 @@ var init_embeddings = __esm(() => {
|
|
|
329149
329209
|
});
|
|
329150
329210
|
|
|
329151
329211
|
// src/utils/codeIndex/store.ts
|
|
329152
|
-
import { createHash as
|
|
329212
|
+
import { createHash as createHash28 } from "crypto";
|
|
329153
329213
|
import { mkdir as mkdir22, readFile as readFile26, writeFile as writeFile22 } from "fs/promises";
|
|
329154
329214
|
import { dirname as dirname44, join as join104 } from "path";
|
|
329155
329215
|
function codeIndexDir(root2) {
|
|
@@ -329159,7 +329219,7 @@ function indexPath(root2) {
|
|
|
329159
329219
|
return join104(codeIndexDir(root2), "index.json");
|
|
329160
329220
|
}
|
|
329161
329221
|
function sha1(content) {
|
|
329162
|
-
return
|
|
329222
|
+
return createHash28("sha1").update(content).digest("hex");
|
|
329163
329223
|
}
|
|
329164
329224
|
function cosineSimilarity(a2, b) {
|
|
329165
329225
|
if (a2.length === 0 || a2.length !== b.length) {
|
|
@@ -329708,11 +329768,11 @@ var init_graph = __esm(() => {
|
|
|
329708
329768
|
});
|
|
329709
329769
|
|
|
329710
329770
|
// src/utils/codeIndex/repoIndex.ts
|
|
329711
|
-
import { createHash as
|
|
329771
|
+
import { createHash as createHash29 } from "crypto";
|
|
329712
329772
|
import { existsSync as existsSync26, mkdirSync as mkdirSync18, readFileSync as readFileSync29, writeFileSync as writeFileSync19 } from "fs";
|
|
329713
329773
|
import { join as join106, posix as posix7 } from "path";
|
|
329714
329774
|
function sha12(content) {
|
|
329715
|
-
return
|
|
329775
|
+
return createHash29("sha1").update(content).digest("hex");
|
|
329716
329776
|
}
|
|
329717
329777
|
function posixExt(file2) {
|
|
329718
329778
|
const dot = file2.lastIndexOf(".");
|
|
@@ -344545,7 +344605,7 @@ var init_stream3 = __esm(() => {
|
|
|
344545
344605
|
});
|
|
344546
344606
|
|
|
344547
344607
|
// src/utils/telemetry/betaSessionTracing.ts
|
|
344548
|
-
import { createHash as
|
|
344608
|
+
import { createHash as createHash30 } from "crypto";
|
|
344549
344609
|
function clearBetaTracingState() {
|
|
344550
344610
|
seenHashes.clear();
|
|
344551
344611
|
lastReportedMessageHash.clear();
|
|
@@ -344572,7 +344632,7 @@ function truncateContent(content, maxSize = MAX_CONTENT_SIZE) {
|
|
|
344572
344632
|
};
|
|
344573
344633
|
}
|
|
344574
344634
|
function shortHash(content) {
|
|
344575
|
-
return
|
|
344635
|
+
return createHash30("sha256").update(content).digest("hex").slice(0, 12);
|
|
344576
344636
|
}
|
|
344577
344637
|
function hashSystemPrompt(systemPrompt) {
|
|
344578
344638
|
return `sp_${shortHash(systemPrompt)}`;
|
|
@@ -344848,7 +344908,7 @@ function isAnyTracingEnabled() {
|
|
|
344848
344908
|
return isTelemetryEnabled() || isEnhancedTelemetryEnabled() || isBetaTracingEnabled();
|
|
344849
344909
|
}
|
|
344850
344910
|
function getTracer() {
|
|
344851
|
-
return import_api39.trace.getTracer("ur-agent.gen_ai", "1.
|
|
344911
|
+
return import_api39.trace.getTracer("ur-agent.gen_ai", "1.49.0");
|
|
344852
344912
|
}
|
|
344853
344913
|
function createSpanAttributes(spanType, customAttributes = {}) {
|
|
344854
344914
|
const baseAttributes = getTelemetryAttributes();
|
|
@@ -353440,7 +353500,7 @@ var init_toolSearch = __esm(() => {
|
|
|
353440
353500
|
});
|
|
353441
353501
|
|
|
353442
353502
|
// src/services/vcr.ts
|
|
353443
|
-
import { createHash as
|
|
353503
|
+
import { createHash as createHash31, randomUUID as randomUUID37 } from "crypto";
|
|
353444
353504
|
import { mkdir as mkdir24, readFile as readFile33, writeFile as writeFile24 } from "fs/promises";
|
|
353445
353505
|
import { dirname as dirname46, join as join111 } from "path";
|
|
353446
353506
|
function shouldUseVCR() {
|
|
@@ -353454,7 +353514,7 @@ async function withFixture(input, fixtureName, f) {
|
|
|
353454
353514
|
if (!shouldUseVCR()) {
|
|
353455
353515
|
return await f();
|
|
353456
353516
|
}
|
|
353457
|
-
const hash3 =
|
|
353517
|
+
const hash3 = createHash31("sha1").update(jsonStringify(input)).digest("hex").slice(0, 12);
|
|
353458
353518
|
const filename = join111(process.env.UR_CODE_TEST_FIXTURES_ROOT ?? getCwd(), `fixtures/${fixtureName}-${hash3}.json`);
|
|
353459
353519
|
try {
|
|
353460
353520
|
const cached5 = jsonParse(await readFile33(filename, { encoding: "utf8" }));
|
|
@@ -353489,7 +353549,7 @@ async function withVCR(messages, f) {
|
|
|
353489
353549
|
return true;
|
|
353490
353550
|
}));
|
|
353491
353551
|
const dehydratedInput = mapMessages(messagesForAPI.map((_) => _.message.content), dehydrateValue);
|
|
353492
|
-
const filename = join111(process.env.UR_CODE_TEST_FIXTURES_ROOT ?? getCwd(), `fixtures/${dehydratedInput.map((_) =>
|
|
353552
|
+
const filename = join111(process.env.UR_CODE_TEST_FIXTURES_ROOT ?? getCwd(), `fixtures/${dehydratedInput.map((_) => createHash31("sha1").update(jsonStringify(_)).digest("hex").slice(0, 6)).join("-")}.json`);
|
|
353493
353553
|
try {
|
|
353494
353554
|
const cached5 = jsonParse(await readFile33(filename, { encoding: "utf8" }));
|
|
353495
353555
|
cached5.output.forEach(addCachedCostToTotalSessionCost);
|
|
@@ -360416,7 +360476,7 @@ var init_managedPlugins = __esm(() => {
|
|
|
360416
360476
|
});
|
|
360417
360477
|
|
|
360418
360478
|
// src/utils/plugins/pluginVersioning.ts
|
|
360419
|
-
import { createHash as
|
|
360479
|
+
import { createHash as createHash32 } from "crypto";
|
|
360420
360480
|
async function calculatePluginVersion(pluginId, source, manifest, installPath, providedVersion, gitCommitSha) {
|
|
360421
360481
|
if (manifest?.version) {
|
|
360422
360482
|
logForDebugging(`Using manifest version for ${pluginId}: ${manifest.version}`);
|
|
@@ -360430,7 +360490,7 @@ async function calculatePluginVersion(pluginId, source, manifest, installPath, p
|
|
|
360430
360490
|
const shortSha = gitCommitSha.substring(0, 12);
|
|
360431
360491
|
if (typeof source === "object" && source.source === "git-subdir") {
|
|
360432
360492
|
const normPath = source.path.replace(/\\/g, "/").replace(/^\.\//, "").replace(/\/+$/, "");
|
|
360433
|
-
const pathHash =
|
|
360493
|
+
const pathHash = createHash32("sha256").update(normPath).digest("hex").substring(0, 8);
|
|
360434
360494
|
const v = `${shortSha}-${pathHash}`;
|
|
360435
360495
|
logForDebugging(`Using git-subdir SHA+path version for ${pluginId}: ${v} (path=${normPath})`);
|
|
360436
360496
|
return v;
|
|
@@ -369650,14 +369710,14 @@ var init_terminalSetup = __esm(() => {
|
|
|
369650
369710
|
});
|
|
369651
369711
|
|
|
369652
369712
|
// src/utils/pasteStore.ts
|
|
369653
|
-
import { createHash as
|
|
369713
|
+
import { createHash as createHash33 } from "crypto";
|
|
369654
369714
|
import { mkdir as mkdir28, readdir as readdir22, readFile as readFile39, stat as stat37, unlink as unlink17, writeFile as writeFile30 } from "fs/promises";
|
|
369655
369715
|
import { join as join126 } from "path";
|
|
369656
369716
|
function getPasteStoreDir() {
|
|
369657
369717
|
return join126(getURConfigHomeDir(), PASTE_STORE_DIR);
|
|
369658
369718
|
}
|
|
369659
369719
|
function hashPastedText(content) {
|
|
369660
|
-
return
|
|
369720
|
+
return createHash33("sha256").update(content).digest("hex").slice(0, 16);
|
|
369661
369721
|
}
|
|
369662
369722
|
function getPastePath(hash3) {
|
|
369663
369723
|
return join126(getPasteStoreDir(), `${hash3}.txt`);
|
|
@@ -373290,11 +373350,11 @@ var init_sideQuestion = __esm(() => {
|
|
|
373290
373350
|
});
|
|
373291
373351
|
|
|
373292
373352
|
// src/services/sideChats/sideChatStore.ts
|
|
373293
|
-
import { createHash as
|
|
373353
|
+
import { createHash as createHash34, randomUUID as randomUUID41 } from "crypto";
|
|
373294
373354
|
import { existsSync as existsSync29, lstatSync as lstatSync9, readdirSync as readdirSync6 } from "fs";
|
|
373295
373355
|
import { join as join129 } from "path";
|
|
373296
373356
|
function digest2(value) {
|
|
373297
|
-
return `sha256:${
|
|
373357
|
+
return `sha256:${createHash34("sha256").update(value).digest("hex")}`;
|
|
373298
373358
|
}
|
|
373299
373359
|
function stableJson3(value) {
|
|
373300
373360
|
if (Array.isArray(value))
|
|
@@ -373511,7 +373571,7 @@ var init_sideChatStore = __esm(() => {
|
|
|
373511
373571
|
MAX_CONTENT_BYTES = 64 * 1024;
|
|
373512
373572
|
ID_RE2 = /^[a-zA-Z0-9._-]{1,200}$/;
|
|
373513
373573
|
DIGEST_RE2 = /^sha256:[a-f0-9]{64}$/;
|
|
373514
|
-
GENESIS = `sha256:${
|
|
373574
|
+
GENESIS = `sha256:${createHash34("sha256").update("ur-side-chat-genesis-v1").digest("hex")}`;
|
|
373515
373575
|
});
|
|
373516
373576
|
|
|
373517
373577
|
// src/commands/btw/btw.tsx
|
|
@@ -373942,7 +374002,7 @@ function Feedback({
|
|
|
373942
374002
|
platform: env2.platform,
|
|
373943
374003
|
gitRepo: envInfo.isGit,
|
|
373944
374004
|
terminal: env2.terminal,
|
|
373945
|
-
version: "1.
|
|
374005
|
+
version: "1.49.0",
|
|
373946
374006
|
transcript: normalizeMessagesForAPI(messages),
|
|
373947
374007
|
errors: sanitizedErrors,
|
|
373948
374008
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -374134,7 +374194,7 @@ function Feedback({
|
|
|
374134
374194
|
", ",
|
|
374135
374195
|
env2.terminal,
|
|
374136
374196
|
", v",
|
|
374137
|
-
"1.
|
|
374197
|
+
"1.49.0"
|
|
374138
374198
|
]
|
|
374139
374199
|
}, undefined, true, undefined, this)
|
|
374140
374200
|
]
|
|
@@ -374240,7 +374300,7 @@ ${sanitizedDescription}
|
|
|
374240
374300
|
` + `**Environment Info**
|
|
374241
374301
|
` + `- Platform: ${env2.platform}
|
|
374242
374302
|
` + `- Terminal: ${env2.terminal}
|
|
374243
|
-
` + `- Version: ${"1.
|
|
374303
|
+
` + `- Version: ${"1.49.0"}
|
|
374244
374304
|
` + `- Feedback ID: ${feedbackId}
|
|
374245
374305
|
` + `
|
|
374246
374306
|
**Errors**
|
|
@@ -377351,7 +377411,7 @@ function buildPrimarySection() {
|
|
|
377351
377411
|
}, undefined, false, undefined, this);
|
|
377352
377412
|
return [{
|
|
377353
377413
|
label: "Version",
|
|
377354
|
-
value: "1.
|
|
377414
|
+
value: "1.49.0"
|
|
377355
377415
|
}, {
|
|
377356
377416
|
label: "Session name",
|
|
377357
377417
|
value: nameValue
|
|
@@ -380681,7 +380741,7 @@ function Config({
|
|
|
380681
380741
|
}
|
|
380682
380742
|
}, undefined, false, undefined, this)
|
|
380683
380743
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime178.jsxDEV(ChannelDowngradeDialog, {
|
|
380684
|
-
currentVersion: "1.
|
|
380744
|
+
currentVersion: "1.49.0",
|
|
380685
380745
|
onChoice: (choice) => {
|
|
380686
380746
|
setShowSubmenu(null);
|
|
380687
380747
|
setTabsHidden(false);
|
|
@@ -380693,7 +380753,7 @@ function Config({
|
|
|
380693
380753
|
autoUpdatesChannel: "stable"
|
|
380694
380754
|
};
|
|
380695
380755
|
if (choice === "stay") {
|
|
380696
|
-
newSettings.minimumVersion = "1.
|
|
380756
|
+
newSettings.minimumVersion = "1.49.0";
|
|
380697
380757
|
}
|
|
380698
380758
|
updateSettingsForSource("userSettings", newSettings);
|
|
380699
380759
|
setSettingsData((prev_27) => ({
|
|
@@ -388763,7 +388823,7 @@ function HelpV2(t0) {
|
|
|
388763
388823
|
let t6;
|
|
388764
388824
|
if ($2[31] !== tabs) {
|
|
388765
388825
|
t6 = /* @__PURE__ */ jsx_dev_runtime205.jsxDEV(Tabs, {
|
|
388766
|
-
title: `UR v${"1.
|
|
388826
|
+
title: `UR v${"1.49.0"}`,
|
|
388767
388827
|
color: "professionalBlue",
|
|
388768
388828
|
defaultTab: "general",
|
|
388769
388829
|
children: tabs
|
|
@@ -389680,7 +389740,7 @@ function buildToolUseContext(tools, readFileStateCache, toolPermissionContext, a
|
|
|
389680
389740
|
async function handleInitialize(options2) {
|
|
389681
389741
|
return {
|
|
389682
389742
|
name: "UR",
|
|
389683
|
-
version: "1.
|
|
389743
|
+
version: "1.49.0",
|
|
389684
389744
|
protocolVersion: "0.1.0",
|
|
389685
389745
|
workspaceRoot: options2.cwd,
|
|
389686
389746
|
capabilities: {
|
|
@@ -392383,7 +392443,7 @@ var init_guardrails = __esm(() => {
|
|
|
392383
392443
|
});
|
|
392384
392444
|
|
|
392385
392445
|
// src/services/agents/agenticCi.ts
|
|
392386
|
-
import { createHash as
|
|
392446
|
+
import { createHash as createHash35, randomUUID as randomUUID44 } from "crypto";
|
|
392387
392447
|
import {
|
|
392388
392448
|
existsSync as existsSync32,
|
|
392389
392449
|
mkdtempSync,
|
|
@@ -392714,7 +392774,7 @@ function boundedTail(text, maxChars = AGENTIC_CI_MAX_LOG_CHARS) {
|
|
|
392714
392774
|
return value.length <= maxChars ? value : value.slice(-maxChars);
|
|
392715
392775
|
}
|
|
392716
392776
|
function sha2562(value) {
|
|
392717
|
-
return
|
|
392777
|
+
return createHash35("sha256").update(value).digest("hex");
|
|
392718
392778
|
}
|
|
392719
392779
|
function containsPath(base2, candidate) {
|
|
392720
392780
|
const rel = relative35(resolve49(base2), resolve49(candidate));
|
|
@@ -393160,7 +393220,7 @@ function compileAgenticCiWorkflow(specName = "default", options2 = {}) {
|
|
|
393160
393220
|
if (spec.name !== specName) {
|
|
393161
393221
|
throw new Error("Agentic CI workflow spec name does not match");
|
|
393162
393222
|
}
|
|
393163
|
-
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.
|
|
393223
|
+
const packageVersion = options2.packageVersion ?? (typeof MACRO !== "undefined" ? "1.49.0" : "1.48.0");
|
|
393164
393224
|
if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(packageVersion)) {
|
|
393165
393225
|
throw new Error("invalid ur-agent package version");
|
|
393166
393226
|
}
|
|
@@ -393356,7 +393416,7 @@ jobs:
|
|
|
393356
393416
|
`;
|
|
393357
393417
|
var init_github_app = __esm(() => {
|
|
393358
393418
|
init_agenticCi();
|
|
393359
|
-
urVersion2 = typeof MACRO !== "undefined" ? "1.
|
|
393419
|
+
urVersion2 = typeof MACRO !== "undefined" ? "1.49.0" : "1.48.0";
|
|
393360
393420
|
WORKFLOW_CONTENT = compileAgenticCiWorkflow("default", {
|
|
393361
393421
|
packageVersion: urVersion2
|
|
393362
393422
|
});
|
|
@@ -411347,7 +411407,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
411347
411407
|
return [];
|
|
411348
411408
|
}
|
|
411349
411409
|
}
|
|
411350
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.
|
|
411410
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.49.0") {
|
|
411351
411411
|
if (process.env.USER_TYPE === "ant") {
|
|
411352
411412
|
const changelog = "";
|
|
411353
411413
|
if (changelog) {
|
|
@@ -411374,7 +411434,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.48.0")
|
|
|
411374
411434
|
releaseNotes
|
|
411375
411435
|
};
|
|
411376
411436
|
}
|
|
411377
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.
|
|
411437
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.49.0") {
|
|
411378
411438
|
if (process.env.USER_TYPE === "ant") {
|
|
411379
411439
|
const changelog = "";
|
|
411380
411440
|
if (changelog) {
|
|
@@ -414231,7 +414291,7 @@ function getRecentActivitySync() {
|
|
|
414231
414291
|
return cachedActivity;
|
|
414232
414292
|
}
|
|
414233
414293
|
function getLogoDisplayData() {
|
|
414234
|
-
const version2 = process.env.DEMO_VERSION ?? "1.
|
|
414294
|
+
const version2 = process.env.DEMO_VERSION ?? "1.49.0";
|
|
414235
414295
|
const serverUrl = getDirectConnectServerUrl();
|
|
414236
414296
|
const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
|
|
414237
414297
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -415115,7 +415175,7 @@ function LogoV2() {
|
|
|
415115
415175
|
if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
415116
415176
|
t2 = () => {
|
|
415117
415177
|
const currentConfig2 = getGlobalConfig();
|
|
415118
|
-
if (currentConfig2.lastReleaseNotesSeen === "1.
|
|
415178
|
+
if (currentConfig2.lastReleaseNotesSeen === "1.49.0") {
|
|
415119
415179
|
return;
|
|
415120
415180
|
}
|
|
415121
415181
|
saveGlobalConfig(_temp327);
|
|
@@ -415800,12 +415860,12 @@ function LogoV2() {
|
|
|
415800
415860
|
return t41;
|
|
415801
415861
|
}
|
|
415802
415862
|
function _temp327(current) {
|
|
415803
|
-
if (current.lastReleaseNotesSeen === "1.
|
|
415863
|
+
if (current.lastReleaseNotesSeen === "1.49.0") {
|
|
415804
415864
|
return current;
|
|
415805
415865
|
}
|
|
415806
415866
|
return {
|
|
415807
415867
|
...current,
|
|
415808
|
-
lastReleaseNotesSeen: "1.
|
|
415868
|
+
lastReleaseNotesSeen: "1.49.0"
|
|
415809
415869
|
};
|
|
415810
415870
|
}
|
|
415811
415871
|
function _temp243(s_0) {
|
|
@@ -431301,7 +431361,7 @@ runner; \`ur trigger\` is the inbound parser that decides what to run.
|
|
|
431301
431361
|
path: ".github/workflows/ur.yml",
|
|
431302
431362
|
root: "project",
|
|
431303
431363
|
content: compileAgenticCiWorkflow("default", {
|
|
431304
|
-
packageVersion: typeof MACRO !== "undefined" ? "1.
|
|
431364
|
+
packageVersion: typeof MACRO !== "undefined" ? "1.49.0" : "1.48.0"
|
|
431305
431365
|
})
|
|
431306
431366
|
},
|
|
431307
431367
|
{
|
|
@@ -431364,7 +431424,7 @@ function value(tokens, flag) {
|
|
|
431364
431424
|
return index2 >= 0 ? tokens[index2 + 1] : undefined;
|
|
431365
431425
|
}
|
|
431366
431426
|
function cliVersion() {
|
|
431367
|
-
return typeof MACRO !== "undefined" ? "1.
|
|
431427
|
+
return typeof MACRO !== "undefined" ? "1.49.0" : "1.48.0";
|
|
431368
431428
|
}
|
|
431369
431429
|
function workflowPath(cwd2) {
|
|
431370
431430
|
return join155(cwd2, ".github", "workflows", "ur-agentic-ci.yml");
|
|
@@ -437220,7 +437280,7 @@ function createAcpStdioApp(deps) {
|
|
|
437220
437280
|
}
|
|
437221
437281
|
},
|
|
437222
437282
|
authMethods: [],
|
|
437223
|
-
agentInfo: { name: "UR-Nexus", version: "1.
|
|
437283
|
+
agentInfo: { name: "UR-Nexus", version: "1.49.0" }
|
|
437224
437284
|
})).onRequest("authenticate", () => ({})).onRequest("session/new", async (context6) => {
|
|
437225
437285
|
const result = runtime2.newSession(context6.params.cwd, context6.params.mcpServers, context6.params.additionalDirectories);
|
|
437226
437286
|
await runtime2.announce({
|
|
@@ -437317,7 +437377,7 @@ function createAcpStdioAgent(deps) {
|
|
|
437317
437377
|
}
|
|
437318
437378
|
},
|
|
437319
437379
|
authMethods: [],
|
|
437320
|
-
agentInfo: { name: "UR-Nexus", version: "1.
|
|
437380
|
+
agentInfo: { name: "UR-Nexus", version: "1.49.0" }
|
|
437321
437381
|
});
|
|
437322
437382
|
return;
|
|
437323
437383
|
case "authenticate":
|
|
@@ -438065,7 +438125,7 @@ var init_connect2 = __esm(() => {
|
|
|
438065
438125
|
});
|
|
438066
438126
|
|
|
438067
438127
|
// src/services/agents/scheduler.ts
|
|
438068
|
-
import { createHash as
|
|
438128
|
+
import { createHash as createHash36 } from "crypto";
|
|
438069
438129
|
import { existsSync as existsSync39, mkdirSync as mkdirSync30, unlinkSync as unlinkSync8, writeFileSync as writeFileSync30 } from "fs";
|
|
438070
438130
|
import { homedir as homedir31 } from "os";
|
|
438071
438131
|
import { join as join157 } from "path";
|
|
@@ -438073,7 +438133,7 @@ function defaultBin() {
|
|
|
438073
438133
|
return { file: process.execPath, args: [process.argv[1] ?? ""] };
|
|
438074
438134
|
}
|
|
438075
438135
|
function schedulerLabel(cwd2) {
|
|
438076
|
-
const hash3 =
|
|
438136
|
+
const hash3 = createHash36("sha1").update(cwd2).digest("hex").slice(0, 8);
|
|
438077
438137
|
return `com.ur.automation.${hash3}`;
|
|
438078
438138
|
}
|
|
438079
438139
|
function detectPlatform() {
|
|
@@ -442529,7 +442589,7 @@ var exports_skill = {};
|
|
|
442529
442589
|
__export(exports_skill, {
|
|
442530
442590
|
call: () => call66
|
|
442531
442591
|
});
|
|
442532
|
-
import { generateKeyPairSync, randomUUID as randomUUID47 } from "crypto";
|
|
442592
|
+
import { generateKeyPairSync as generateKeyPairSync2, randomUUID as randomUUID47 } from "crypto";
|
|
442533
442593
|
import {
|
|
442534
442594
|
chmodSync as chmodSync8,
|
|
442535
442595
|
existsSync as existsSync47,
|
|
@@ -442697,7 +442757,7 @@ var VALUE_OPTIONS, call66 = async (args) => {
|
|
|
442697
442757
|
if (existingKeys[name]) {
|
|
442698
442758
|
throw new Error(`Trusted key ID already exists: ${name}`);
|
|
442699
442759
|
}
|
|
442700
|
-
const { privateKey, publicKey } =
|
|
442760
|
+
const { privateKey, publicKey } = generateKeyPairSync2("ed25519");
|
|
442701
442761
|
const privatePem = privateKey.export({ type: "pkcs8", format: "pem" });
|
|
442702
442762
|
const publicPem = publicKey.export({ type: "spki", format: "pem" }).toString();
|
|
442703
442763
|
mkdirSync37(dirname68(privatePath), { recursive: true, mode: 448 });
|
|
@@ -443069,11 +443129,11 @@ var init_worktree2 = __esm(() => {
|
|
|
443069
443129
|
});
|
|
443070
443130
|
|
|
443071
443131
|
// src/services/agents/auditExport.ts
|
|
443072
|
-
import { createHash as
|
|
443132
|
+
import { createHash as createHash37 } from "crypto";
|
|
443073
443133
|
import { existsSync as existsSync48, readFileSync as readFileSync48 } from "fs";
|
|
443074
443134
|
import { join as join168 } from "path";
|
|
443075
443135
|
function chainHash(prev, payload) {
|
|
443076
|
-
return
|
|
443136
|
+
return createHash37("sha256").update(prev).update(JSON.stringify(payload)).digest("hex");
|
|
443077
443137
|
}
|
|
443078
443138
|
function readActionsLedger(cwd2) {
|
|
443079
443139
|
const path22 = join168(cwd2, ".ur", "actions.jsonl");
|
|
@@ -443540,7 +443600,7 @@ var init_recipe2 = __esm(() => {
|
|
|
443540
443600
|
});
|
|
443541
443601
|
|
|
443542
443602
|
// src/services/agents/arena.ts
|
|
443543
|
-
import { createHash as
|
|
443603
|
+
import { createHash as createHash38, randomUUID as randomUUID48 } from "crypto";
|
|
443544
443604
|
import {
|
|
443545
443605
|
existsSync as existsSync52,
|
|
443546
443606
|
mkdirSync as mkdirSync39,
|
|
@@ -443989,7 +444049,7 @@ async function removeWorktree(cwd2, worktree2) {
|
|
|
443989
444049
|
rmSync12(worktree2, { recursive: true, force: true });
|
|
443990
444050
|
}
|
|
443991
444051
|
function sha2563(value2) {
|
|
443992
|
-
return
|
|
444052
|
+
return createHash38("sha256").update(value2).digest("hex");
|
|
443993
444053
|
}
|
|
443994
444054
|
function sanitizeCandidate(candidate, retainWorktree = false) {
|
|
443995
444055
|
return {
|
|
@@ -444401,7 +444461,7 @@ function createDefaultManagedCloudClient() {
|
|
|
444401
444461
|
var init_cloudManagedRunner = () => {};
|
|
444402
444462
|
|
|
444403
444463
|
// src/services/agents/cloudTasks.ts
|
|
444404
|
-
import { createHash as
|
|
444464
|
+
import { createHash as createHash39, randomUUID as randomUUID50 } from "crypto";
|
|
444405
444465
|
import { spawn as spawn14 } from "child_process";
|
|
444406
444466
|
import {
|
|
444407
444467
|
appendFileSync as appendFileSync6,
|
|
@@ -445065,7 +445125,7 @@ async function steerCloudTask(cwd2, id, message, options2 = {}) {
|
|
|
445065
445125
|
reason: "message must be between 1 byte and 64 KiB"
|
|
445066
445126
|
};
|
|
445067
445127
|
}
|
|
445068
|
-
const messageSha256 =
|
|
445128
|
+
const messageSha256 = createHash39("sha256").update(trimmed).digest("hex");
|
|
445069
445129
|
const reservation = withManifestMutation(cwd2, (manifest) => {
|
|
445070
445130
|
const task = manifest.tasks.find((candidate) => candidate.id === id);
|
|
445071
445131
|
if (!task)
|
|
@@ -449809,7 +449869,7 @@ var init_escalate2 = __esm(() => {
|
|
|
449809
449869
|
});
|
|
449810
449870
|
|
|
449811
449871
|
// src/services/agents/learnedPlaybooks.ts
|
|
449812
|
-
import { createHash as
|
|
449872
|
+
import { createHash as createHash40 } from "crypto";
|
|
449813
449873
|
import {
|
|
449814
449874
|
chmodSync as chmodSync10,
|
|
449815
449875
|
existsSync as existsSync66,
|
|
@@ -449824,7 +449884,7 @@ function storePath(cwd2) {
|
|
|
449824
449884
|
return join185(learningDir2(cwd2), "playbooks.json");
|
|
449825
449885
|
}
|
|
449826
449886
|
function digest3(value2) {
|
|
449827
|
-
return `sha256:${
|
|
449887
|
+
return `sha256:${createHash40("sha256").update(JSON.stringify(value2)).digest("hex")}`;
|
|
449828
449888
|
}
|
|
449829
449889
|
function emptyStore() {
|
|
449830
449890
|
return { version: 1, candidates: [] };
|
|
@@ -450029,7 +450089,7 @@ function mineLearnedPlaybooks(cwd2, options2 = {}) {
|
|
|
450029
450089
|
}));
|
|
450030
450090
|
generated.push({
|
|
450031
450091
|
version: 1,
|
|
450032
|
-
id: `lp-${
|
|
450092
|
+
id: `lp-${createHash40("sha256").update(fingerprint2).digest("hex").slice(0, 16)}`,
|
|
450033
450093
|
name,
|
|
450034
450094
|
status: "candidate",
|
|
450035
450095
|
revision: 1,
|
|
@@ -453996,7 +454056,7 @@ var init_sdk2 = __esm(() => {
|
|
|
453996
454056
|
});
|
|
453997
454057
|
|
|
453998
454058
|
// src/services/agents/trajectory.ts
|
|
453999
|
-
import { createHash as
|
|
454059
|
+
import { createHash as createHash41 } from "crypto";
|
|
454000
454060
|
function record3(value2) {
|
|
454001
454061
|
return value2 && typeof value2 === "object" ? value2 : {};
|
|
454002
454062
|
}
|
|
@@ -454009,7 +454069,7 @@ function normalizeTrajectoryTool(value2) {
|
|
|
454009
454069
|
function opaqueId(value2) {
|
|
454010
454070
|
if (typeof value2 !== "string" || !value2)
|
|
454011
454071
|
return;
|
|
454012
|
-
return
|
|
454072
|
+
return createHash41("sha256").update(value2).digest("hex").slice(0, 16);
|
|
454013
454073
|
}
|
|
454014
454074
|
function contentBlocks(message) {
|
|
454015
454075
|
const content = record3(message).content;
|
|
@@ -456950,7 +457010,7 @@ var init_os2 = __esm(() => {
|
|
|
456950
457010
|
});
|
|
456951
457011
|
|
|
456952
457012
|
// src/services/agents/workspaceCoordinator.ts
|
|
456953
|
-
import { createHash as
|
|
457013
|
+
import { createHash as createHash42, randomUUID as randomUUID53 } from "crypto";
|
|
456954
457014
|
import { existsSync as existsSync76, lstatSync as lstatSync18, realpathSync as realpathSync15, rmSync as rmSync17 } from "fs";
|
|
456955
457015
|
import { tmpdir as tmpdir13 } from "os";
|
|
456956
457016
|
import { dirname as dirname72, isAbsolute as isAbsolute42, join as join195, relative as relative46, resolve as resolve63 } from "path";
|
|
@@ -456970,7 +457030,7 @@ function assertId(value2, label) {
|
|
|
456970
457030
|
throw new Error(`Invalid ${label}: ${value2}`);
|
|
456971
457031
|
}
|
|
456972
457032
|
function hash3(value2) {
|
|
456973
|
-
return `sha256:${
|
|
457033
|
+
return `sha256:${createHash42("sha256").update(value2).digest("hex")}`;
|
|
456974
457034
|
}
|
|
456975
457035
|
function stableJson4(value2) {
|
|
456976
457036
|
if (Array.isArray(value2))
|
|
@@ -458055,7 +458115,7 @@ var init_project2 = __esm(() => {
|
|
|
458055
458115
|
});
|
|
458056
458116
|
|
|
458057
458117
|
// src/ur/notes.ts
|
|
458058
|
-
import { createHash as
|
|
458118
|
+
import { createHash as createHash43 } from "crypto";
|
|
458059
458119
|
import { appendFileSync as appendFileSync7, existsSync as existsSync77, mkdirSync as mkdirSync57, readFileSync as readFileSync72, writeFileSync as writeFileSync58 } from "fs";
|
|
458060
458120
|
import { dirname as dirname73, join as join196 } from "path";
|
|
458061
458121
|
function readJsonl(file2) {
|
|
@@ -458079,7 +458139,7 @@ function append2(file2, rec) {
|
|
|
458079
458139
|
}
|
|
458080
458140
|
function memorySlug(text) {
|
|
458081
458141
|
const words = text.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").split("-").filter(Boolean).slice(0, 8).join("-");
|
|
458082
|
-
const hash4 =
|
|
458142
|
+
const hash4 = createHash43("sha1").update(text).digest("hex").slice(0, 8);
|
|
458083
458143
|
return `${words || "remembered-note"}-${hash4}`;
|
|
458084
458144
|
}
|
|
458085
458145
|
function yamlSingleQuote(value2) {
|
|
@@ -459076,7 +459136,7 @@ var init_code_index2 = __esm(() => {
|
|
|
459076
459136
|
|
|
459077
459137
|
// node_modules/typescript/lib/typescript.js
|
|
459078
459138
|
var require_typescript2 = __commonJS((exports, module) => {
|
|
459079
|
-
var __dirname = "/
|
|
459139
|
+
var __dirname = "/sessions/practical-focused-tesla/mnt/UR-1.43.3/node_modules/typescript/lib", __filename = "/sessions/practical-focused-tesla/mnt/UR-1.43.3/node_modules/typescript/lib/typescript.js";
|
|
459080
459140
|
/*! *****************************************************************************
|
|
459081
459141
|
Copyright (c) Microsoft Corporation. All rights reserved.
|
|
459082
459142
|
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
|
@@ -644796,7 +644856,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
|
|
|
644796
644856
|
smapsRollup,
|
|
644797
644857
|
platform: process.platform,
|
|
644798
644858
|
nodeVersion: process.version,
|
|
644799
|
-
ccVersion: "1.
|
|
644859
|
+
ccVersion: "1.49.0"
|
|
644800
644860
|
};
|
|
644801
644861
|
}
|
|
644802
644862
|
async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
|
|
@@ -645382,7 +645442,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
645382
645442
|
var call145 = async () => {
|
|
645383
645443
|
return {
|
|
645384
645444
|
type: "text",
|
|
645385
|
-
value: "1.
|
|
645445
|
+
value: "1.49.0"
|
|
645386
645446
|
};
|
|
645387
645447
|
}, version2, version_default;
|
|
645388
645448
|
var init_version = __esm(() => {
|
|
@@ -656500,7 +656560,7 @@ function generateHtmlReport(data, insights) {
|
|
|
656500
656560
|
</html>`;
|
|
656501
656561
|
}
|
|
656502
656562
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
656503
|
-
const version3 = typeof MACRO !== "undefined" ? "1.
|
|
656563
|
+
const version3 = typeof MACRO !== "undefined" ? "1.49.0" : "unknown";
|
|
656504
656564
|
const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
|
|
656505
656565
|
const facets_summary = {
|
|
656506
656566
|
total: facets.size,
|
|
@@ -660833,7 +660893,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
660833
660893
|
init_settings2();
|
|
660834
660894
|
init_slowOperations();
|
|
660835
660895
|
init_uuid();
|
|
660836
|
-
VERSION7 = typeof MACRO !== "undefined" ? "1.
|
|
660896
|
+
VERSION7 = typeof MACRO !== "undefined" ? "1.49.0" : "unknown";
|
|
660837
660897
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
660838
660898
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
660839
660899
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -662048,7 +662108,7 @@ var init_filesystem = __esm(() => {
|
|
|
662048
662108
|
});
|
|
662049
662109
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
662050
662110
|
const nonce = randomBytes19(16).toString("hex");
|
|
662051
|
-
return join224(getURTempDir(), "bundled-skills", "1.
|
|
662111
|
+
return join224(getURTempDir(), "bundled-skills", "1.49.0", nonce);
|
|
662052
662112
|
});
|
|
662053
662113
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
662054
662114
|
});
|
|
@@ -667900,7 +667960,7 @@ var init_prompts4 = __esm(() => {
|
|
|
667900
667960
|
});
|
|
667901
667961
|
|
|
667902
667962
|
// src/utils/api.ts
|
|
667903
|
-
import { createHash as
|
|
667963
|
+
import { createHash as createHash44 } from "crypto";
|
|
667904
667964
|
function filterSwarmFieldsFromSchema(toolName, schema) {
|
|
667905
667965
|
const fieldsToRemove = SWARM_FIELDS_BY_TOOL[toolName];
|
|
667906
667966
|
if (!fieldsToRemove || fieldsToRemove.length === 0) {
|
|
@@ -667990,7 +668050,7 @@ function logAPIPrefix(systemPrompt) {
|
|
|
667990
668050
|
logEvent("tengu_sysprompt_block", {
|
|
667991
668051
|
snippet: firstSystemPrompt?.slice(0, 20),
|
|
667992
668052
|
length: firstSystemPrompt?.length ?? 0,
|
|
667993
|
-
hash: firstSystemPrompt ?
|
|
668053
|
+
hash: firstSystemPrompt ? createHash44("sha256").update(firstSystemPrompt).digest("hex") : ""
|
|
667994
668054
|
});
|
|
667995
668055
|
}
|
|
667996
668056
|
function splitSysPromptPrefix(systemPrompt, options4) {
|
|
@@ -668316,7 +668376,7 @@ var init_api3 = __esm(() => {
|
|
|
668316
668376
|
});
|
|
668317
668377
|
|
|
668318
668378
|
// src/utils/fingerprint.ts
|
|
668319
|
-
import { createHash as
|
|
668379
|
+
import { createHash as createHash45 } from "crypto";
|
|
668320
668380
|
function extractFirstMessageText(messages) {
|
|
668321
668381
|
const firstUserMessage = messages.find((msg) => msg.type === "user");
|
|
668322
668382
|
if (!firstUserMessage) {
|
|
@@ -668338,12 +668398,12 @@ function computeFingerprint(messageText2, version3) {
|
|
|
668338
668398
|
const indices = [4, 7, 20];
|
|
668339
668399
|
const chars = indices.map((i3) => messageText2[i3] || "0").join("");
|
|
668340
668400
|
const fingerprintInput = `${FINGERPRINT_SALT}${chars}${version3}`;
|
|
668341
|
-
const hash4 =
|
|
668401
|
+
const hash4 = createHash45("sha256").update(fingerprintInput).digest("hex");
|
|
668342
668402
|
return hash4.slice(0, 3);
|
|
668343
668403
|
}
|
|
668344
668404
|
function computeFingerprintFromMessages(messages) {
|
|
668345
668405
|
const firstMessageText = extractFirstMessageText(messages);
|
|
668346
|
-
return computeFingerprint(firstMessageText, "1.
|
|
668406
|
+
return computeFingerprint(firstMessageText, "1.49.0");
|
|
668347
668407
|
}
|
|
668348
668408
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
668349
668409
|
var init_fingerprint = () => {};
|
|
@@ -670239,7 +670299,7 @@ async function sideQuery(opts) {
|
|
|
670239
670299
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
670240
670300
|
}
|
|
670241
670301
|
const messageText2 = extractFirstUserMessageText(messages);
|
|
670242
|
-
const fingerprint2 = computeFingerprint(messageText2, "1.
|
|
670302
|
+
const fingerprint2 = computeFingerprint(messageText2, "1.49.0");
|
|
670243
670303
|
const attributionHeader = getAttributionHeader(fingerprint2);
|
|
670244
670304
|
const systemBlocks = [
|
|
670245
670305
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -675010,7 +675070,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
675010
675070
|
slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
|
|
675011
675071
|
apiKeySource: getURHQApiKeyWithSource().source,
|
|
675012
675072
|
betas: getSdkBetas(),
|
|
675013
|
-
ur_version: "1.
|
|
675073
|
+
ur_version: "1.49.0",
|
|
675014
675074
|
output_style: outputStyle2,
|
|
675015
675075
|
agents: inputs.agents.map((agent2) => agent2.agentType),
|
|
675016
675076
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
|
|
@@ -688870,7 +688930,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
688870
688930
|
function getSemverPart(version3) {
|
|
688871
688931
|
return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
|
|
688872
688932
|
}
|
|
688873
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.
|
|
688933
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.49.0") {
|
|
688874
688934
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react228.useState(() => getSemverPart(initialVersion));
|
|
688875
688935
|
if (!updatedVersion) {
|
|
688876
688936
|
return null;
|
|
@@ -688919,7 +688979,7 @@ function AutoUpdater({
|
|
|
688919
688979
|
return;
|
|
688920
688980
|
}
|
|
688921
688981
|
if (false) {}
|
|
688922
|
-
const currentVersion = "1.
|
|
688982
|
+
const currentVersion = "1.49.0";
|
|
688923
688983
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
688924
688984
|
let latestVersion = await getLatestVersion(channel);
|
|
688925
688985
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -689148,12 +689208,12 @@ function NativeAutoUpdater({
|
|
|
689148
689208
|
logEvent("tengu_native_auto_updater_start", {});
|
|
689149
689209
|
try {
|
|
689150
689210
|
const maxVersion = await getMaxVersion();
|
|
689151
|
-
if (maxVersion && gt("1.
|
|
689211
|
+
if (maxVersion && gt("1.49.0", maxVersion)) {
|
|
689152
689212
|
const msg = await getMaxVersionMessage();
|
|
689153
689213
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
689154
689214
|
}
|
|
689155
689215
|
const result = await installLatest(channel);
|
|
689156
|
-
const currentVersion = "1.
|
|
689216
|
+
const currentVersion = "1.49.0";
|
|
689157
689217
|
const latencyMs = Date.now() - startTime;
|
|
689158
689218
|
if (result.lockFailed) {
|
|
689159
689219
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -689290,17 +689350,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
689290
689350
|
const maxVersion = await getMaxVersion();
|
|
689291
689351
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
689292
689352
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
689293
|
-
if (gte("1.
|
|
689294
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.
|
|
689353
|
+
if (gte("1.49.0", maxVersion)) {
|
|
689354
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.49.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
689295
689355
|
setUpdateAvailable(false);
|
|
689296
689356
|
return;
|
|
689297
689357
|
}
|
|
689298
689358
|
latest = maxVersion;
|
|
689299
689359
|
}
|
|
689300
|
-
const hasUpdate = latest && !gte("1.
|
|
689360
|
+
const hasUpdate = latest && !gte("1.49.0", latest) && !shouldSkipVersion(latest);
|
|
689301
689361
|
setUpdateAvailable(!!hasUpdate);
|
|
689302
689362
|
if (hasUpdate) {
|
|
689303
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.
|
|
689363
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.49.0"} -> ${latest}`);
|
|
689304
689364
|
}
|
|
689305
689365
|
};
|
|
689306
689366
|
$2[0] = t1;
|
|
@@ -689334,7 +689394,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
689334
689394
|
wrap: "truncate",
|
|
689335
689395
|
children: [
|
|
689336
689396
|
"currentVersion: ",
|
|
689337
|
-
"1.
|
|
689397
|
+
"1.49.0"
|
|
689338
689398
|
]
|
|
689339
689399
|
}, undefined, true, undefined, this);
|
|
689340
689400
|
$2[3] = verbose;
|
|
@@ -700031,7 +700091,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
700031
700091
|
project_dir: getOriginalCwd(),
|
|
700032
700092
|
added_dirs: addedDirs
|
|
700033
700093
|
},
|
|
700034
|
-
version: "1.
|
|
700094
|
+
version: "1.49.0",
|
|
700035
700095
|
output_style: {
|
|
700036
700096
|
name: outputStyleName
|
|
700037
700097
|
},
|
|
@@ -700114,7 +700174,7 @@ function StatusLineInner({
|
|
|
700114
700174
|
const taskValues = Object.values(tasks2);
|
|
700115
700175
|
const taskRunningCount = taskValues.filter((task2) => task2.status === "running" || task2.status === "pending").length;
|
|
700116
700176
|
const defaultStatusLineText = buildDefaultStatusBar({
|
|
700117
|
-
version: "1.
|
|
700177
|
+
version: "1.49.0",
|
|
700118
700178
|
providerLabel: providerRuntime.providerLabel,
|
|
700119
700179
|
authMode: providerRuntime.authLabel,
|
|
700120
700180
|
model: providerRuntime.model ?? renderModelName(mainLoopModel),
|
|
@@ -712257,7 +712317,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
|
|
|
712257
712317
|
} catch {}
|
|
712258
712318
|
const data = {
|
|
712259
712319
|
trigger: trigger2,
|
|
712260
|
-
version: "1.
|
|
712320
|
+
version: "1.49.0",
|
|
712261
712321
|
platform: process.platform,
|
|
712262
712322
|
transcript,
|
|
712263
712323
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -724543,7 +724603,7 @@ function WelcomeV2() {
|
|
|
724543
724603
|
dimColor: true,
|
|
724544
724604
|
children: [
|
|
724545
724605
|
"v",
|
|
724546
|
-
"1.
|
|
724606
|
+
"1.49.0"
|
|
724547
724607
|
]
|
|
724548
724608
|
}, undefined, true, undefined, this)
|
|
724549
724609
|
]
|
|
@@ -725803,7 +725863,7 @@ function completeOnboarding() {
|
|
|
725803
725863
|
saveGlobalConfig((current) => ({
|
|
725804
725864
|
...current,
|
|
725805
725865
|
hasCompletedOnboarding: true,
|
|
725806
|
-
lastOnboardingVersion: "1.
|
|
725866
|
+
lastOnboardingVersion: "1.49.0"
|
|
725807
725867
|
}));
|
|
725808
725868
|
}
|
|
725809
725869
|
function showDialog(root2, renderer) {
|
|
@@ -730847,7 +730907,7 @@ function appendToLog(path24, message) {
|
|
|
730847
730907
|
cwd: getFsImplementation().cwd(),
|
|
730848
730908
|
userType: process.env.USER_TYPE,
|
|
730849
730909
|
sessionId: getSessionId(),
|
|
730850
|
-
version: "1.
|
|
730910
|
+
version: "1.49.0"
|
|
730851
730911
|
};
|
|
730852
730912
|
getLogWriter(path24).write(messageWithTimestamp);
|
|
730853
730913
|
}
|
|
@@ -735006,8 +735066,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
735006
735066
|
}
|
|
735007
735067
|
async function checkEnvLessBridgeMinVersion() {
|
|
735008
735068
|
const cfg = await getEnvLessBridgeConfig();
|
|
735009
|
-
if (cfg.min_version && lt("1.
|
|
735010
|
-
return `Your version of UR (${"1.
|
|
735069
|
+
if (cfg.min_version && lt("1.49.0", cfg.min_version)) {
|
|
735070
|
+
return `Your version of UR (${"1.49.0"}) is too old for Remote Control.
|
|
735011
735071
|
Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
|
|
735012
735072
|
}
|
|
735013
735073
|
return null;
|
|
@@ -735481,7 +735541,7 @@ async function initBridgeCore(params) {
|
|
|
735481
735541
|
const rawApi = createBridgeApiClient({
|
|
735482
735542
|
baseUrl,
|
|
735483
735543
|
getAccessToken,
|
|
735484
|
-
runnerVersion: "1.
|
|
735544
|
+
runnerVersion: "1.49.0",
|
|
735485
735545
|
onDebug: logForDebugging,
|
|
735486
735546
|
onAuth401,
|
|
735487
735547
|
getTrustedDeviceToken
|
|
@@ -744829,7 +744889,7 @@ __export(exports_agUi, {
|
|
|
744829
744889
|
getAgUiCapabilities: () => getAgUiCapabilities,
|
|
744830
744890
|
createAgUiHttpHandler: () => createAgUiHttpHandler
|
|
744831
744891
|
});
|
|
744832
|
-
import { createHash as
|
|
744892
|
+
import { createHash as createHash46 } from "crypto";
|
|
744833
744893
|
function isLoopback4(host) {
|
|
744834
744894
|
const normalized = host.toLowerCase();
|
|
744835
744895
|
return normalized === "127.0.0.1" || normalized === "localhost" || normalized === "::1" || normalized === "0:0:0:0:0:0:0:1";
|
|
@@ -744886,7 +744946,7 @@ function authenticate(request, token) {
|
|
|
744886
744946
|
}
|
|
744887
744947
|
return {
|
|
744888
744948
|
ok: true,
|
|
744889
|
-
owner: `bearer:${
|
|
744949
|
+
owner: `bearer:${createHash46("sha256").update(supplied).digest("base64url")}`
|
|
744890
744950
|
};
|
|
744891
744951
|
}
|
|
744892
744952
|
function allowedOrigin(request, allowedOrigins) {
|
|
@@ -744950,7 +745010,7 @@ function getAgUiCapabilities() {
|
|
|
744950
745010
|
name: "UR-Nexus",
|
|
744951
745011
|
type: "ur-nexus",
|
|
744952
745012
|
description: "Provider-flexible, local-first autonomous engineering workflow agent.",
|
|
744953
|
-
version: "1.
|
|
745013
|
+
version: "1.49.0",
|
|
744954
745014
|
provider: "UR",
|
|
744955
745015
|
documentationUrl: "https://github.com/Maitham16/UR/blob/master/docs/AG_UI.md"
|
|
744956
745016
|
},
|
|
@@ -746090,7 +746150,7 @@ function createMCPServer(cwd4, debug2, verbose) {
|
|
|
746090
746150
|
};
|
|
746091
746151
|
const server2 = new Server({
|
|
746092
746152
|
name: "ur-nexus",
|
|
746093
|
-
version: "1.
|
|
746153
|
+
version: "1.49.0"
|
|
746094
746154
|
}, {
|
|
746095
746155
|
capabilities: {
|
|
746096
746156
|
tools: {}
|
|
@@ -747103,7 +747163,7 @@ __export(exports_mcp2026, {
|
|
|
747103
747163
|
createUrMcp2026Runtime: () => createUrMcp2026Runtime,
|
|
747104
747164
|
createMcp2026HttpHandler: () => createMcp2026HttpHandler
|
|
747105
747165
|
});
|
|
747106
|
-
import { createHash as
|
|
747166
|
+
import { createHash as createHash47 } from "crypto";
|
|
747107
747167
|
function isRecord7(value2) {
|
|
747108
747168
|
return Boolean(value2) && typeof value2 === "object" && !Array.isArray(value2);
|
|
747109
747169
|
}
|
|
@@ -747144,7 +747204,7 @@ function authenticate2(request, token) {
|
|
|
747144
747204
|
}
|
|
747145
747205
|
return {
|
|
747146
747206
|
ok: true,
|
|
747147
|
-
owner: `bearer:${
|
|
747207
|
+
owner: `bearer:${createHash47("sha256").update(supplied).digest("base64url")}`
|
|
747148
747208
|
};
|
|
747149
747209
|
}
|
|
747150
747210
|
function response(status2, body, origin2, extraHeaders = {}) {
|
|
@@ -747248,7 +747308,7 @@ function thrownResponse(error40) {
|
|
|
747248
747308
|
}
|
|
747249
747309
|
async function createUrMcp2026Runtime(options4) {
|
|
747250
747310
|
const server2 = createMCPServer(options4.cwd, options4.debug === true, options4.verbose === true);
|
|
747251
|
-
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.
|
|
747311
|
+
const client2 = new Client({ name: "ur-mcp-2026-adapter", version: "1.49.0" }, { capabilities: {} });
|
|
747252
747312
|
const [clientTransport, serverTransport] = createLinkedTransportPair();
|
|
747253
747313
|
try {
|
|
747254
747314
|
await server2.connect(serverTransport);
|
|
@@ -747259,7 +747319,7 @@ async function createUrMcp2026Runtime(options4) {
|
|
|
747259
747319
|
}
|
|
747260
747320
|
const runtime2 = new Mcp2026Runtime({
|
|
747261
747321
|
cwd: options4.cwd,
|
|
747262
|
-
version: "1.
|
|
747322
|
+
version: "1.49.0",
|
|
747263
747323
|
backend: {
|
|
747264
747324
|
listTools: async () => {
|
|
747265
747325
|
const listed = await client2.listTools();
|
|
@@ -749392,7 +749452,7 @@ async function update() {
|
|
|
749392
749452
|
logEvent("tengu_update_check", {});
|
|
749393
749453
|
const diagnostic2 = await getDoctorDiagnostic();
|
|
749394
749454
|
const result = await checkUpgradeStatus({
|
|
749395
|
-
currentVersion: "1.
|
|
749455
|
+
currentVersion: "1.49.0",
|
|
749396
749456
|
packageName: UR_AGENT_PACKAGE_NAME,
|
|
749397
749457
|
installationType: diagnostic2.installationType,
|
|
749398
749458
|
latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
|
|
@@ -750708,7 +750768,7 @@ ${customInstructions}` : customInstructions;
|
|
|
750708
750768
|
}
|
|
750709
750769
|
}
|
|
750710
750770
|
logForDiagnosticsNoPII("info", "started", {
|
|
750711
|
-
version: "1.
|
|
750771
|
+
version: "1.49.0",
|
|
750712
750772
|
is_native_binary: isInBundledMode()
|
|
750713
750773
|
});
|
|
750714
750774
|
registerCleanup(async () => {
|
|
@@ -751494,7 +751554,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
751494
751554
|
pendingHookMessages
|
|
751495
751555
|
}, renderAndRun);
|
|
751496
751556
|
}
|
|
751497
|
-
}).version("1.
|
|
751557
|
+
}).version("1.49.0 (UR-Nexus)", "-v, --version", "Output the version number");
|
|
751498
751558
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
751499
751559
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
751500
751560
|
if (canUserConfigureAdvisor()) {
|
|
@@ -752510,7 +752570,7 @@ if (false) {}
|
|
|
752510
752570
|
async function main2() {
|
|
752511
752571
|
const args = process.argv.slice(2);
|
|
752512
752572
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
752513
|
-
console.log(`${"1.
|
|
752573
|
+
console.log(`${"1.49.0"} (UR-Nexus)`);
|
|
752514
752574
|
return;
|
|
752515
752575
|
}
|
|
752516
752576
|
if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {
|