ur-agent 1.41.1 → 1.43.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 +15 -0
- package/README.md +2 -1
- package/dist/cli.js +271 -111
- package/documentation/index.html +1 -1
- package/extensions/vscode-ur-inline-diffs/package.json +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.43.0
|
|
4
|
+
|
|
5
|
+
- Add `ur artifacts serve [--port 4180]`: a local web page for artifacts.
|
|
6
|
+
`GET /artifacts/<id>` renders one artifact (status, summary, feedback,
|
|
7
|
+
content), `/` lists all, with `/artifacts/<id>/raw` and `/api/artifacts[/<id>]`
|
|
8
|
+
endpoints. Bound to 127.0.0.1; stop with `ur artifacts serve --stop`.
|
|
9
|
+
|
|
10
|
+
## 1.42.0
|
|
11
|
+
|
|
12
|
+
- Project safety policy no longer hard-blocks commands. Risky or deny-matched
|
|
13
|
+
commands (package installs, destructive git operations, secret access,
|
|
14
|
+
sandbox-required commands when the sandbox is unavailable) now surface as
|
|
15
|
+
approval prompts instead of `Blocked by project safety policy` errors; the
|
|
16
|
+
user decides. `ur safety`/`ur sandbox` evaluation output is unchanged.
|
|
17
|
+
|
|
3
18
|
## 1.41.1
|
|
4
19
|
|
|
5
20
|
- Harden provider tests against stored API keys in the local secure storage.
|
package/README.md
CHANGED
|
@@ -377,7 +377,7 @@ as first-class subcommands in the shipped CLI.
|
|
|
377
377
|
| `ur semantic-memory` | Build and search a project-local memory index. |
|
|
378
378
|
| `ur memory retention` | Configure and apply local memory retention policies (TTL, max entries, decay). |
|
|
379
379
|
| `ur knowledge` | Manage a curated project knowledge base with provenance. |
|
|
380
|
-
| `ur artifacts` | Capture diffs, test runs, notes, and review feedback under `.ur/artifacts
|
|
380
|
+
| `ur artifacts` | Capture diffs, test runs, notes, and review feedback under `.ur/artifacts/`; `serve` opens a local web page per artifact ID. |
|
|
381
381
|
| `ur claim-ledger` | Map generated claims to file, web, MCP, tool, or user sources. |
|
|
382
382
|
| `ur browser-qa` | Validate and smoke-run browser QA replay fixtures. |
|
|
383
383
|
| `ur eval run` | Run an eval suite and grade outputs; optionally capture cost/tokens/files/test metrics. |
|
|
@@ -560,6 +560,7 @@ ur code-index repo search "rate limiter"
|
|
|
560
560
|
ur skill init security-review
|
|
561
561
|
ur skill run security-review "src/auth.ts"
|
|
562
562
|
ur artifacts capture-tests --command "bun test"
|
|
563
|
+
ur artifacts serve --port 4180
|
|
563
564
|
ur agent-task pr --create --dry-run
|
|
564
565
|
ur acp serve --port 8123
|
|
565
566
|
ur exec "add tests for the parser" --concurrency 4 --json
|
package/dist/cli.js
CHANGED
|
@@ -71146,7 +71146,7 @@ var init_auth = __esm(() => {
|
|
|
71146
71146
|
|
|
71147
71147
|
// src/utils/userAgent.ts
|
|
71148
71148
|
function getURCodeUserAgent() {
|
|
71149
|
-
return `ur/${"1.
|
|
71149
|
+
return `ur/${"1.43.0"}`;
|
|
71150
71150
|
}
|
|
71151
71151
|
|
|
71152
71152
|
// src/utils/workloadContext.ts
|
|
@@ -71168,7 +71168,7 @@ function getUserAgent() {
|
|
|
71168
71168
|
const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
|
|
71169
71169
|
const workload = getWorkload();
|
|
71170
71170
|
const workloadSuffix = workload ? `, workload/${workload}` : "";
|
|
71171
|
-
return `ur-cli/${"1.
|
|
71171
|
+
return `ur-cli/${"1.43.0"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
|
|
71172
71172
|
}
|
|
71173
71173
|
function getMCPUserAgent() {
|
|
71174
71174
|
const parts = [];
|
|
@@ -71182,7 +71182,7 @@ function getMCPUserAgent() {
|
|
|
71182
71182
|
parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
|
|
71183
71183
|
}
|
|
71184
71184
|
const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
|
|
71185
|
-
return `ur/${"1.
|
|
71185
|
+
return `ur/${"1.43.0"}${suffix}`;
|
|
71186
71186
|
}
|
|
71187
71187
|
function getWebFetchUserAgent() {
|
|
71188
71188
|
return `UR-User (${getURCodeUserAgent()})`;
|
|
@@ -71320,7 +71320,7 @@ var init_user = __esm(() => {
|
|
|
71320
71320
|
deviceId,
|
|
71321
71321
|
sessionId: getSessionId(),
|
|
71322
71322
|
email: getEmail(),
|
|
71323
|
-
appVersion: "1.
|
|
71323
|
+
appVersion: "1.43.0",
|
|
71324
71324
|
platform: getHostPlatformForAnalytics(),
|
|
71325
71325
|
organizationUuid,
|
|
71326
71326
|
accountUuid,
|
|
@@ -77837,7 +77837,7 @@ var init_metadata = __esm(() => {
|
|
|
77837
77837
|
COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
|
|
77838
77838
|
WHITESPACE_REGEX = /\s+/;
|
|
77839
77839
|
getVersionBase = memoize_default(() => {
|
|
77840
|
-
const match = "1.
|
|
77840
|
+
const match = "1.43.0".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
|
|
77841
77841
|
return match ? match[0] : undefined;
|
|
77842
77842
|
});
|
|
77843
77843
|
buildEnvContext = memoize_default(async () => {
|
|
@@ -77877,7 +77877,7 @@ var init_metadata = __esm(() => {
|
|
|
77877
77877
|
isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
|
|
77878
77878
|
isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
|
|
77879
77879
|
isURAiAuth: isURAISubscriber(),
|
|
77880
|
-
version: "1.
|
|
77880
|
+
version: "1.43.0",
|
|
77881
77881
|
versionBase: getVersionBase(),
|
|
77882
77882
|
buildTime: "",
|
|
77883
77883
|
deploymentEnvironment: env2.detectDeploymentEnvironment(),
|
|
@@ -78547,7 +78547,7 @@ function initialize1PEventLogging() {
|
|
|
78547
78547
|
const platform2 = getPlatform();
|
|
78548
78548
|
const attributes = {
|
|
78549
78549
|
[import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
|
|
78550
|
-
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.
|
|
78550
|
+
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.43.0"
|
|
78551
78551
|
};
|
|
78552
78552
|
if (platform2 === "wsl") {
|
|
78553
78553
|
const wslVersion = getWslVersion();
|
|
@@ -78574,7 +78574,7 @@ function initialize1PEventLogging() {
|
|
|
78574
78574
|
})
|
|
78575
78575
|
]
|
|
78576
78576
|
});
|
|
78577
|
-
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.
|
|
78577
|
+
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.43.0");
|
|
78578
78578
|
}
|
|
78579
78579
|
async function reinitialize1PEventLoggingIfConfigChanged() {
|
|
78580
78580
|
if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
|
|
@@ -83873,7 +83873,7 @@ function formatAgentTrendReport(report = buildAgentTrendReport()) {
|
|
|
83873
83873
|
function formatA2AAgentCard(options = {}, pretty = true) {
|
|
83874
83874
|
return JSON.stringify(buildA2AAgentCard(options), null, pretty ? 2 : 0);
|
|
83875
83875
|
}
|
|
83876
|
-
var urVersion = "1.
|
|
83876
|
+
var urVersion = "1.43.0", coverage, priorityRoadmap;
|
|
83877
83877
|
var init_trends = __esm(() => {
|
|
83878
83878
|
coverage = [
|
|
83879
83879
|
{
|
|
@@ -85868,7 +85868,7 @@ function getAttributionHeader(fingerprint) {
|
|
|
85868
85868
|
if (!isAttributionHeaderEnabled()) {
|
|
85869
85869
|
return "";
|
|
85870
85870
|
}
|
|
85871
|
-
const version2 = `${"1.
|
|
85871
|
+
const version2 = `${"1.43.0"}.${fingerprint}`;
|
|
85872
85872
|
const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
|
|
85873
85873
|
const cch = "";
|
|
85874
85874
|
const workload = getWorkload();
|
|
@@ -193771,7 +193771,7 @@ function getTelemetryAttributes() {
|
|
|
193771
193771
|
attributes["session.id"] = sessionId;
|
|
193772
193772
|
}
|
|
193773
193773
|
if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
|
|
193774
|
-
attributes["app.version"] = "1.
|
|
193774
|
+
attributes["app.version"] = "1.43.0";
|
|
193775
193775
|
}
|
|
193776
193776
|
const oauthAccount = getOauthAccountInfo();
|
|
193777
193777
|
if (oauthAccount) {
|
|
@@ -229157,7 +229157,7 @@ function getInstallationEnv() {
|
|
|
229157
229157
|
return;
|
|
229158
229158
|
}
|
|
229159
229159
|
function getURCodeVersion() {
|
|
229160
|
-
return "1.
|
|
229160
|
+
return "1.43.0";
|
|
229161
229161
|
}
|
|
229162
229162
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
229163
229163
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -231996,7 +231996,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
231996
231996
|
const client2 = new Client({
|
|
231997
231997
|
name: "ur",
|
|
231998
231998
|
title: "UR",
|
|
231999
|
-
version: "1.
|
|
231999
|
+
version: "1.43.0",
|
|
232000
232000
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
232001
232001
|
websiteUrl: PRODUCT_URL
|
|
232002
232002
|
}, {
|
|
@@ -232350,7 +232350,7 @@ var init_client5 = __esm(() => {
|
|
|
232350
232350
|
const client2 = new Client({
|
|
232351
232351
|
name: "ur",
|
|
232352
232352
|
title: "UR",
|
|
232353
|
-
version: "1.
|
|
232353
|
+
version: "1.43.0",
|
|
232354
232354
|
description: "UR-Nexus autonomous engineering workflow engine",
|
|
232355
232355
|
websiteUrl: PRODUCT_URL
|
|
232356
232356
|
}, {
|
|
@@ -242164,9 +242164,9 @@ async function assertMinVersion() {
|
|
|
242164
242164
|
if (false) {}
|
|
242165
242165
|
try {
|
|
242166
242166
|
const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
|
|
242167
|
-
if (versionConfig.minVersion && lt("1.
|
|
242167
|
+
if (versionConfig.minVersion && lt("1.43.0", versionConfig.minVersion)) {
|
|
242168
242168
|
console.error(`
|
|
242169
|
-
It looks like your version of UR (${"1.
|
|
242169
|
+
It looks like your version of UR (${"1.43.0"}) needs an update.
|
|
242170
242170
|
A newer version (${versionConfig.minVersion} or higher) is required to continue.
|
|
242171
242171
|
|
|
242172
242172
|
To update, please run:
|
|
@@ -242382,7 +242382,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
242382
242382
|
logError2(new AutoUpdaterError("Another process is currently installing an update"));
|
|
242383
242383
|
logEvent("tengu_auto_updater_lock_contention", {
|
|
242384
242384
|
pid: process.pid,
|
|
242385
|
-
currentVersion: "1.
|
|
242385
|
+
currentVersion: "1.43.0"
|
|
242386
242386
|
});
|
|
242387
242387
|
return "in_progress";
|
|
242388
242388
|
}
|
|
@@ -242391,7 +242391,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
242391
242391
|
if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
|
|
242392
242392
|
logError2(new Error("Windows NPM detected in WSL environment"));
|
|
242393
242393
|
logEvent("tengu_auto_updater_windows_npm_in_wsl", {
|
|
242394
|
-
currentVersion: "1.
|
|
242394
|
+
currentVersion: "1.43.0"
|
|
242395
242395
|
});
|
|
242396
242396
|
console.error(`
|
|
242397
242397
|
Error: Windows NPM detected in WSL
|
|
@@ -242926,7 +242926,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
242926
242926
|
}
|
|
242927
242927
|
async function getDoctorDiagnostic() {
|
|
242928
242928
|
const installationType = await getCurrentInstallationType();
|
|
242929
|
-
const version2 = typeof MACRO !== "undefined" ? "1.
|
|
242929
|
+
const version2 = typeof MACRO !== "undefined" ? "1.43.0" : "unknown";
|
|
242930
242930
|
const installationPath = await getInstallationPath();
|
|
242931
242931
|
const invokedBinary = getInvokedBinary();
|
|
242932
242932
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -243861,8 +243861,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
243861
243861
|
const maxVersion = await getMaxVersion();
|
|
243862
243862
|
if (maxVersion && gt(version2, maxVersion)) {
|
|
243863
243863
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
|
|
243864
|
-
if (gte("1.
|
|
243865
|
-
logForDebugging(`Native installer: current version ${"1.
|
|
243864
|
+
if (gte("1.43.0", maxVersion)) {
|
|
243865
|
+
logForDebugging(`Native installer: current version ${"1.43.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
243866
243866
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
243867
243867
|
latency_ms: Date.now() - startTime,
|
|
243868
243868
|
max_version: maxVersion,
|
|
@@ -243873,7 +243873,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
243873
243873
|
version2 = maxVersion;
|
|
243874
243874
|
}
|
|
243875
243875
|
}
|
|
243876
|
-
if (!forceReinstall && version2 === "1.
|
|
243876
|
+
if (!forceReinstall && version2 === "1.43.0" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
|
|
243877
243877
|
logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
|
|
243878
243878
|
logEvent("tengu_native_update_complete", {
|
|
243879
243879
|
latency_ms: Date.now() - startTime,
|
|
@@ -311265,27 +311265,27 @@ async function bashToolHasPermission(input, context3, getCommandSubcommandPrefix
|
|
|
311265
311265
|
if (safetyEvaluation.behavior === "deny") {
|
|
311266
311266
|
const reason = safetyEvaluation.reasons.join("; ");
|
|
311267
311267
|
recordShellSafetyViolation(safetyEvaluation, reason);
|
|
311268
|
+
const decisionReason2 = {
|
|
311269
|
+
type: "other",
|
|
311270
|
+
reason: `Project safety policy requires approval: ${reason}`
|
|
311271
|
+
};
|
|
311268
311272
|
return {
|
|
311269
|
-
behavior: "
|
|
311270
|
-
|
|
311271
|
-
|
|
311272
|
-
|
|
311273
|
-
reason: `Project safety policy denied command: ${reason}`
|
|
311274
|
-
}
|
|
311273
|
+
behavior: "ask",
|
|
311274
|
+
decisionReason: decisionReason2,
|
|
311275
|
+
message: createPermissionRequestMessage2(BashTool.name, decisionReason2),
|
|
311276
|
+
suggestions: []
|
|
311275
311277
|
};
|
|
311276
311278
|
}
|
|
311277
311279
|
if (safetyEvaluation.sandboxMode === "required" && !shouldUseSandbox(input)) {
|
|
311278
|
-
const
|
|
311279
|
-
|
|
311280
|
-
|
|
311281
|
-
|
|
311280
|
+
const decisionReason2 = {
|
|
311281
|
+
type: "other",
|
|
311282
|
+
reason: `Sandbox unavailable; approval required to run unsandboxed: ${safetyEvaluation.reasons.join("; ")}`
|
|
311283
|
+
};
|
|
311282
311284
|
return {
|
|
311283
|
-
behavior: "
|
|
311284
|
-
|
|
311285
|
-
|
|
311286
|
-
|
|
311287
|
-
reason: `Project safety policy requires sandbox enforcement: ${reason}; ${unavailableReason}`
|
|
311288
|
-
}
|
|
311285
|
+
behavior: "ask",
|
|
311286
|
+
decisionReason: decisionReason2,
|
|
311287
|
+
message: createPermissionRequestMessage2(BashTool.name, decisionReason2),
|
|
311288
|
+
suggestions: []
|
|
311289
311289
|
};
|
|
311290
311290
|
}
|
|
311291
311291
|
if (safetyEvaluation.behavior === "ask") {
|
|
@@ -340844,7 +340844,7 @@ function Feedback({
|
|
|
340844
340844
|
platform: env2.platform,
|
|
340845
340845
|
gitRepo: envInfo.isGit,
|
|
340846
340846
|
terminal: env2.terminal,
|
|
340847
|
-
version: "1.
|
|
340847
|
+
version: "1.43.0",
|
|
340848
340848
|
transcript: normalizeMessagesForAPI(messages),
|
|
340849
340849
|
errors: sanitizedErrors,
|
|
340850
340850
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -341036,7 +341036,7 @@ function Feedback({
|
|
|
341036
341036
|
", ",
|
|
341037
341037
|
env2.terminal,
|
|
341038
341038
|
", v",
|
|
341039
|
-
"1.
|
|
341039
|
+
"1.43.0"
|
|
341040
341040
|
]
|
|
341041
341041
|
}, undefined, true, undefined, this)
|
|
341042
341042
|
]
|
|
@@ -341142,7 +341142,7 @@ ${sanitizedDescription}
|
|
|
341142
341142
|
` + `**Environment Info**
|
|
341143
341143
|
` + `- Platform: ${env2.platform}
|
|
341144
341144
|
` + `- Terminal: ${env2.terminal}
|
|
341145
|
-
` + `- Version: ${"1.
|
|
341145
|
+
` + `- Version: ${"1.43.0"}
|
|
341146
341146
|
` + `- Feedback ID: ${feedbackId}
|
|
341147
341147
|
` + `
|
|
341148
341148
|
**Errors**
|
|
@@ -344253,7 +344253,7 @@ function buildPrimarySection() {
|
|
|
344253
344253
|
}, undefined, false, undefined, this);
|
|
344254
344254
|
return [{
|
|
344255
344255
|
label: "Version",
|
|
344256
|
-
value: "1.
|
|
344256
|
+
value: "1.43.0"
|
|
344257
344257
|
}, {
|
|
344258
344258
|
label: "Session name",
|
|
344259
344259
|
value: nameValue
|
|
@@ -347554,7 +347554,7 @@ function Config({
|
|
|
347554
347554
|
}
|
|
347555
347555
|
}, undefined, false, undefined, this)
|
|
347556
347556
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime177.jsxDEV(ChannelDowngradeDialog, {
|
|
347557
|
-
currentVersion: "1.
|
|
347557
|
+
currentVersion: "1.43.0",
|
|
347558
347558
|
onChoice: (choice) => {
|
|
347559
347559
|
setShowSubmenu(null);
|
|
347560
347560
|
setTabsHidden(false);
|
|
@@ -347566,7 +347566,7 @@ function Config({
|
|
|
347566
347566
|
autoUpdatesChannel: "stable"
|
|
347567
347567
|
};
|
|
347568
347568
|
if (choice === "stay") {
|
|
347569
|
-
newSettings.minimumVersion = "1.
|
|
347569
|
+
newSettings.minimumVersion = "1.43.0";
|
|
347570
347570
|
}
|
|
347571
347571
|
updateSettingsForSource("userSettings", newSettings);
|
|
347572
347572
|
setSettingsData((prev_27) => ({
|
|
@@ -355636,7 +355636,7 @@ function HelpV2(t0) {
|
|
|
355636
355636
|
let t6;
|
|
355637
355637
|
if ($3[31] !== tabs) {
|
|
355638
355638
|
t6 = /* @__PURE__ */ jsx_dev_runtime204.jsxDEV(Tabs, {
|
|
355639
|
-
title: `UR v${"1.
|
|
355639
|
+
title: `UR v${"1.43.0"}`,
|
|
355640
355640
|
color: "professionalBlue",
|
|
355641
355641
|
defaultTab: "general",
|
|
355642
355642
|
children: tabs
|
|
@@ -356382,7 +356382,7 @@ function buildToolUseContext(tools, readFileStateCache) {
|
|
|
356382
356382
|
async function handleInitialize(options2) {
|
|
356383
356383
|
return {
|
|
356384
356384
|
name: "UR",
|
|
356385
|
-
version: "1.
|
|
356385
|
+
version: "1.43.0",
|
|
356386
356386
|
protocolVersion: "0.1.0",
|
|
356387
356387
|
workspaceRoot: options2.cwd,
|
|
356388
356388
|
capabilities: {
|
|
@@ -376524,7 +376524,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
376524
376524
|
return [];
|
|
376525
376525
|
}
|
|
376526
376526
|
}
|
|
376527
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.
|
|
376527
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.43.0") {
|
|
376528
376528
|
if (process.env.USER_TYPE === "ant") {
|
|
376529
376529
|
const changelog = "";
|
|
376530
376530
|
if (changelog) {
|
|
@@ -376551,7 +376551,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.41.1")
|
|
|
376551
376551
|
releaseNotes
|
|
376552
376552
|
};
|
|
376553
376553
|
}
|
|
376554
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.
|
|
376554
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.43.0") {
|
|
376555
376555
|
if (process.env.USER_TYPE === "ant") {
|
|
376556
376556
|
const changelog = "";
|
|
376557
376557
|
if (changelog) {
|
|
@@ -377730,7 +377730,7 @@ function getRecentActivitySync() {
|
|
|
377730
377730
|
return cachedActivity;
|
|
377731
377731
|
}
|
|
377732
377732
|
function getLogoDisplayData() {
|
|
377733
|
-
const version2 = process.env.DEMO_VERSION ?? "1.
|
|
377733
|
+
const version2 = process.env.DEMO_VERSION ?? "1.43.0";
|
|
377734
377734
|
const serverUrl = getDirectConnectServerUrl();
|
|
377735
377735
|
const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
|
|
377736
377736
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -378519,7 +378519,7 @@ function LogoV2() {
|
|
|
378519
378519
|
if ($3[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
378520
378520
|
t2 = () => {
|
|
378521
378521
|
const currentConfig2 = getGlobalConfig();
|
|
378522
|
-
if (currentConfig2.lastReleaseNotesSeen === "1.
|
|
378522
|
+
if (currentConfig2.lastReleaseNotesSeen === "1.43.0") {
|
|
378523
378523
|
return;
|
|
378524
378524
|
}
|
|
378525
378525
|
saveGlobalConfig(_temp326);
|
|
@@ -379204,12 +379204,12 @@ function LogoV2() {
|
|
|
379204
379204
|
return t41;
|
|
379205
379205
|
}
|
|
379206
379206
|
function _temp326(current) {
|
|
379207
|
-
if (current.lastReleaseNotesSeen === "1.
|
|
379207
|
+
if (current.lastReleaseNotesSeen === "1.43.0") {
|
|
379208
379208
|
return current;
|
|
379209
379209
|
}
|
|
379210
379210
|
return {
|
|
379211
379211
|
...current,
|
|
379212
|
-
lastReleaseNotesSeen: "1.
|
|
379212
|
+
lastReleaseNotesSeen: "1.43.0"
|
|
379213
379213
|
};
|
|
379214
379214
|
}
|
|
379215
379215
|
function _temp243(s_0) {
|
|
@@ -406936,6 +406936,139 @@ var init_context_pack2 = __esm(() => {
|
|
|
406936
406936
|
context_pack_default = contextPack;
|
|
406937
406937
|
});
|
|
406938
406938
|
|
|
406939
|
+
// src/services/agents/artifactsServer.ts
|
|
406940
|
+
import { createServer as createServer5 } from "http";
|
|
406941
|
+
function page(title, body) {
|
|
406942
|
+
return `<!doctype html>
|
|
406943
|
+
<html lang="en">
|
|
406944
|
+
<head>
|
|
406945
|
+
<meta charset="utf-8">
|
|
406946
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
406947
|
+
<title>${escapeXmlAttr(title)}</title>
|
|
406948
|
+
<style>
|
|
406949
|
+
:root { color-scheme: light dark; }
|
|
406950
|
+
body { font-family: ui-sans-serif, system-ui, sans-serif; max-width: 880px; margin: 2rem auto; padding: 0 1rem; line-height: 1.5; }
|
|
406951
|
+
a { color: #4078c0; text-decoration: none; }
|
|
406952
|
+
a:hover { text-decoration: underline; }
|
|
406953
|
+
table { border-collapse: collapse; width: 100%; }
|
|
406954
|
+
th, td { text-align: left; padding: .4rem .6rem; border-bottom: 1px solid #8884; }
|
|
406955
|
+
pre { background: #8881; padding: 1rem; border-radius: 6px; overflow-x: auto; }
|
|
406956
|
+
.badge { padding: .1rem .5rem; border-radius: 999px; color: #fff; font-size: .8rem; }
|
|
406957
|
+
.meta { color: #888; font-size: .9rem; }
|
|
406958
|
+
.feedback { border-left: 3px solid #8884; padding-left: .8rem; margin: .5rem 0; }
|
|
406959
|
+
</style>
|
|
406960
|
+
</head>
|
|
406961
|
+
<body>${body}</body>
|
|
406962
|
+
</html>
|
|
406963
|
+
`;
|
|
406964
|
+
}
|
|
406965
|
+
function badge(status2) {
|
|
406966
|
+
return `<span class="badge" style="background:${STATUS_COLOR[status2]}">${status2}</span>`;
|
|
406967
|
+
}
|
|
406968
|
+
function renderArtifactList(artifacts) {
|
|
406969
|
+
const rows = artifacts.map((a2) => `<tr><td><a href="/artifacts/${escapeXmlAttr(a2.id)}">${escapeXmlAttr(a2.id)}</a></td>` + `<td>${escapeXmlAttr(a2.kind)}</td><td>${escapeXmlAttr(a2.title)}</td>` + `<td>${badge(a2.status)}</td><td>${escapeXmlAttr(a2.summary ?? "")}</td></tr>`).join(`
|
|
406970
|
+
`);
|
|
406971
|
+
const table = artifacts.length ? `<table><tr><th>ID</th><th>Kind</th><th>Title</th><th>Status</th><th>Summary</th></tr>${rows}</table>` : "<p>No artifacts yet. Capture one with <code>ur artifacts capture-diff</code> or <code>ur artifacts add ...</code>.</p>";
|
|
406972
|
+
return page("Artifacts", `<h1>Artifacts</h1>${table}`);
|
|
406973
|
+
}
|
|
406974
|
+
function renderArtifactPage(artifact, body) {
|
|
406975
|
+
const feedback2 = artifact.feedback.map((f) => `<div class="feedback"><span class="meta">${escapeXmlAttr(f.at)}</span><br>${escapeXmlAttr(f.text)}</div>`).join(`
|
|
406976
|
+
`);
|
|
406977
|
+
const parts = [
|
|
406978
|
+
`<p><a href="/">← all artifacts</a></p>`,
|
|
406979
|
+
`<h1>Artifact ${escapeXmlAttr(artifact.id)} <span class="meta">[${escapeXmlAttr(artifact.kind)}]</span> ${badge(artifact.status)}</h1>`,
|
|
406980
|
+
`<p><strong>${escapeXmlAttr(artifact.title)}</strong></p>`,
|
|
406981
|
+
artifact.summary ? `<p>${escapeXmlAttr(artifact.summary)}</p>` : "",
|
|
406982
|
+
`<p class="meta">created ${escapeXmlAttr(artifact.createdAt)} \xB7 updated ${escapeXmlAttr(artifact.updatedAt)}${artifact.file ? ` \xB7 <a href="/artifacts/${escapeXmlAttr(artifact.id)}/raw">raw</a>` : ""}</p>`,
|
|
406983
|
+
artifact.links?.claims?.length ? `<p class="meta">claims: ${artifact.links.claims.map(escapeXmlAttr).join(", ")}</p>` : "",
|
|
406984
|
+
feedback2 ? `<h2>Feedback</h2>${feedback2}` : "",
|
|
406985
|
+
body !== null ? `<h2>Content</h2><pre>${escapeXmlAttr(body)}</pre>` : ""
|
|
406986
|
+
];
|
|
406987
|
+
return page(`Artifact ${artifact.id} \u2014 ${artifact.title}`, parts.filter(Boolean).join(`
|
|
406988
|
+
`));
|
|
406989
|
+
}
|
|
406990
|
+
function notFound4(id) {
|
|
406991
|
+
return page("Artifact not found", `<h1>Artifact not found: ${escapeXmlAttr(id)}</h1><p><a href="/">← all artifacts</a></p>`);
|
|
406992
|
+
}
|
|
406993
|
+
function respond(res, status2, type, body) {
|
|
406994
|
+
res.writeHead(status2, { "content-type": `${type}; charset=utf-8` });
|
|
406995
|
+
res.end(body);
|
|
406996
|
+
}
|
|
406997
|
+
function handleArtifactsRequest(cwd2, url3) {
|
|
406998
|
+
const path22 = decodeURIComponent(new URL(url3, "http://localhost").pathname).replace(/\/+$/, "") || "/";
|
|
406999
|
+
if (path22 === "/" || path22 === "/artifacts") {
|
|
407000
|
+
return { status: 200, type: "text/html", body: renderArtifactList(listArtifacts(cwd2)) };
|
|
407001
|
+
}
|
|
407002
|
+
if (path22 === "/api/artifacts") {
|
|
407003
|
+
return { status: 200, type: "application/json", body: JSON.stringify({ artifacts: listArtifacts(cwd2) }, null, 2) };
|
|
407004
|
+
}
|
|
407005
|
+
let match = path22.match(/^\/api\/artifacts\/([^/]+)$/);
|
|
407006
|
+
if (match) {
|
|
407007
|
+
const artifact = getArtifact(cwd2, match[1]);
|
|
407008
|
+
return artifact ? { status: 200, type: "application/json", body: JSON.stringify(artifact, null, 2) } : { status: 404, type: "application/json", body: JSON.stringify({ error: `Artifact not found: ${match[1]}` }) };
|
|
407009
|
+
}
|
|
407010
|
+
match = path22.match(/^\/artifacts\/([^/]+)\/raw$/);
|
|
407011
|
+
if (match) {
|
|
407012
|
+
const body = readArtifactBody(cwd2, match[1]);
|
|
407013
|
+
return body !== null ? { status: 200, type: "text/plain", body } : { status: 404, type: "text/plain", body: `Artifact body not found: ${match[1]}` };
|
|
407014
|
+
}
|
|
407015
|
+
match = path22.match(/^\/(?:artifacts\/)?([^/]+)$/);
|
|
407016
|
+
if (match) {
|
|
407017
|
+
const artifact = getArtifact(cwd2, match[1]);
|
|
407018
|
+
if (artifact) {
|
|
407019
|
+
return { status: 200, type: "text/html", body: renderArtifactPage(artifact, readArtifactBody(cwd2, artifact.id)) };
|
|
407020
|
+
}
|
|
407021
|
+
return { status: 404, type: "text/html", body: notFound4(match[1]) };
|
|
407022
|
+
}
|
|
407023
|
+
return { status: 404, type: "text/html", body: notFound4(path22) };
|
|
407024
|
+
}
|
|
407025
|
+
function activeArtifactsServer() {
|
|
407026
|
+
return active ? { port: active.port, url: `http://127.0.0.1:${active.port}` } : null;
|
|
407027
|
+
}
|
|
407028
|
+
function startArtifactsServer(cwd2, port = 4180) {
|
|
407029
|
+
if (active) {
|
|
407030
|
+
return Promise.resolve({ port: active.port, url: `http://127.0.0.1:${active.port}`, alreadyRunning: true });
|
|
407031
|
+
}
|
|
407032
|
+
return new Promise((resolvePromise, reject2) => {
|
|
407033
|
+
const server2 = createServer5((req, res) => {
|
|
407034
|
+
if (req.method !== "GET") {
|
|
407035
|
+
respond(res, 405, "text/plain", "Method not allowed");
|
|
407036
|
+
return;
|
|
407037
|
+
}
|
|
407038
|
+
try {
|
|
407039
|
+
const r = handleArtifactsRequest(cwd2, req.url ?? "/");
|
|
407040
|
+
respond(res, r.status, r.type, r.body);
|
|
407041
|
+
} catch (error40) {
|
|
407042
|
+
respond(res, 500, "text/plain", String(error40));
|
|
407043
|
+
}
|
|
407044
|
+
});
|
|
407045
|
+
server2.once("error", reject2);
|
|
407046
|
+
server2.listen(port, "127.0.0.1", () => {
|
|
407047
|
+
const address = server2.address();
|
|
407048
|
+
const boundPort = typeof address === "object" && address ? address.port : port;
|
|
407049
|
+
active = { server: server2, port: boundPort };
|
|
407050
|
+
resolvePromise({ port: boundPort, url: `http://127.0.0.1:${boundPort}`, alreadyRunning: false });
|
|
407051
|
+
});
|
|
407052
|
+
});
|
|
407053
|
+
}
|
|
407054
|
+
async function stopArtifactsServer() {
|
|
407055
|
+
if (!active)
|
|
407056
|
+
return false;
|
|
407057
|
+
const { server: server2 } = active;
|
|
407058
|
+
active = null;
|
|
407059
|
+
await new Promise((resolvePromise) => server2.close(() => resolvePromise()));
|
|
407060
|
+
return true;
|
|
407061
|
+
}
|
|
407062
|
+
var STATUS_COLOR, active = null;
|
|
407063
|
+
var init_artifactsServer = __esm(() => {
|
|
407064
|
+
init_artifacts();
|
|
407065
|
+
STATUS_COLOR = {
|
|
407066
|
+
pending: "#b58900",
|
|
407067
|
+
approved: "#2aa15f",
|
|
407068
|
+
rejected: "#d94f4f"
|
|
407069
|
+
};
|
|
407070
|
+
});
|
|
407071
|
+
|
|
406939
407072
|
// src/commands/artifacts/artifacts.ts
|
|
406940
407073
|
var exports_artifacts = {};
|
|
406941
407074
|
__export(exports_artifacts, {
|
|
@@ -406946,7 +407079,7 @@ function option18(tokens, name) {
|
|
|
406946
407079
|
return index2 === -1 ? undefined : tokens[index2 + 1];
|
|
406947
407080
|
}
|
|
406948
407081
|
function positionals14(tokens) {
|
|
406949
|
-
const withValue = new Set(["--kind", "--title", "--body", "--file", "--summary", "--feedback", "--command", "--task"]);
|
|
407082
|
+
const withValue = new Set(["--kind", "--title", "--body", "--file", "--summary", "--feedback", "--command", "--task", "--port"]);
|
|
406950
407083
|
const values2 = [];
|
|
406951
407084
|
for (let i3 = 0;i3 < tokens.length; i3++) {
|
|
406952
407085
|
const token = tokens[i3];
|
|
@@ -406968,6 +407101,7 @@ function usage19() {
|
|
|
406968
407101
|
' ur artifacts add --kind plan --title "..." [--body "..."] [--file path] [--summary "..."]',
|
|
406969
407102
|
' ur artifacts capture-diff [--title "..."]',
|
|
406970
407103
|
' ur artifacts capture-tests --command "bun test"',
|
|
407104
|
+
" ur artifacts serve [--port 4180] | serve --stop",
|
|
406971
407105
|
" ur artifacts approve <id>",
|
|
406972
407106
|
' ur artifacts reject <id> --feedback "..."',
|
|
406973
407107
|
' ur artifacts feedback|comment <id> --feedback "..." [--task bg_id]',
|
|
@@ -407021,6 +407155,31 @@ var KINDS, call84 = async (args) => {
|
|
|
407021
407155
|
value: json2 ? JSON.stringify(artifact, null, 2) : `Captured test run as artifact ${artifact.id} (${artifact.summary}).`
|
|
407022
407156
|
};
|
|
407023
407157
|
}
|
|
407158
|
+
if (action3 === "serve") {
|
|
407159
|
+
if (tokens.includes("--stop")) {
|
|
407160
|
+
return {
|
|
407161
|
+
type: "text",
|
|
407162
|
+
value: await stopArtifactsServer() ? "Artifacts server stopped." : "Artifacts server is not running."
|
|
407163
|
+
};
|
|
407164
|
+
}
|
|
407165
|
+
const running = activeArtifactsServer();
|
|
407166
|
+
if (running) {
|
|
407167
|
+
return { type: "text", value: `Artifacts page already running at ${running.url} \u2014 open ${running.url}/artifacts/<id>.` };
|
|
407168
|
+
}
|
|
407169
|
+
const port = Number(option18(tokens, "--port") ?? 4180);
|
|
407170
|
+
if (!Number.isInteger(port) || port < 0 || port > 65535) {
|
|
407171
|
+
return { type: "text", value: `Invalid port: ${option18(tokens, "--port")}` };
|
|
407172
|
+
}
|
|
407173
|
+
try {
|
|
407174
|
+
const { url: url3 } = await startArtifactsServer(cwd2, port);
|
|
407175
|
+
return {
|
|
407176
|
+
type: "text",
|
|
407177
|
+
value: `Artifacts page: ${url3} \u2014 open ${url3}/artifacts/<id> for a single artifact. Stop with \`ur artifacts serve --stop\`.`
|
|
407178
|
+
};
|
|
407179
|
+
} catch (error40) {
|
|
407180
|
+
return { type: "text", value: `Failed to start artifacts server on port ${port}: ${error40}` };
|
|
407181
|
+
}
|
|
407182
|
+
}
|
|
407024
407183
|
if (!id)
|
|
407025
407184
|
return { type: "text", value: usage19() };
|
|
407026
407185
|
if (action3 === "show") {
|
|
@@ -407061,6 +407220,7 @@ var KINDS, call84 = async (args) => {
|
|
|
407061
407220
|
};
|
|
407062
407221
|
var init_artifacts2 = __esm(() => {
|
|
407063
407222
|
init_artifacts();
|
|
407223
|
+
init_artifactsServer();
|
|
407064
407224
|
init_backgroundRunner();
|
|
407065
407225
|
init_argumentSubstitution();
|
|
407066
407226
|
init_cwd2();
|
|
@@ -407074,8 +407234,8 @@ var init_artifacts3 = __esm(() => {
|
|
|
407074
407234
|
type: "local",
|
|
407075
407235
|
name: "artifacts",
|
|
407076
407236
|
aliases: ["artifact"],
|
|
407077
|
-
description: "Reviewable deliverables (plans, diffs, test runs, screenshots) under .ur/artifacts with approve/reject/feedback",
|
|
407078
|
-
argumentHint: "list|show|add|capture-diff|capture-tests|approve|reject|feedback|delete [id] [--kind ...] [--title ...] [--json]",
|
|
407237
|
+
description: "Reviewable deliverables (plans, diffs, test runs, screenshots) under .ur/artifacts with approve/reject/feedback and a local web page (serve)",
|
|
407238
|
+
argumentHint: "list|show|serve|add|capture-diff|capture-tests|approve|reject|feedback|delete [id] [--kind ...] [--title ...] [--port ...] [--json]",
|
|
407079
407239
|
supportsNonInteractive: true,
|
|
407080
407240
|
load: () => Promise.resolve().then(() => (init_artifacts2(), exports_artifacts))
|
|
407081
407241
|
};
|
|
@@ -408940,7 +409100,7 @@ function optionValue7(tokens, flag) {
|
|
|
408940
409100
|
const index2 = tokens.indexOf(flag);
|
|
408941
409101
|
return index2 >= 0 ? tokens[index2 + 1] : undefined;
|
|
408942
409102
|
}
|
|
408943
|
-
function
|
|
409103
|
+
function notFound5(name) {
|
|
408944
409104
|
const available = listSuites(getCwd());
|
|
408945
409105
|
const hint = available.length > 0 ? `
|
|
408946
409106
|
Available: ${available.join(", ")}` : "";
|
|
@@ -409118,7 +409278,7 @@ Run it locally: ur eval run ${result.suite.name}`
|
|
|
409118
409278
|
const suite = loadSuite(cwd2, name);
|
|
409119
409279
|
if (command5 === "validate") {
|
|
409120
409280
|
if (!suite)
|
|
409121
|
-
return
|
|
409281
|
+
return notFound5(name);
|
|
409122
409282
|
const validation = validateEvalSuite(suite);
|
|
409123
409283
|
if (json2)
|
|
409124
409284
|
return { type: "text", value: JSON.stringify(validation, null, 2) };
|
|
@@ -409136,7 +409296,7 @@ Run it locally: ur eval run ${result.suite.name}`
|
|
|
409136
409296
|
}
|
|
409137
409297
|
if (command5 === "run") {
|
|
409138
409298
|
if (!suite)
|
|
409139
|
-
return
|
|
409299
|
+
return notFound5(name);
|
|
409140
409300
|
const validation = validateEvalSuite(suite);
|
|
409141
409301
|
if (!validation.valid) {
|
|
409142
409302
|
return { type: "text", value: formatSuiteValidation(suite, validation) };
|
|
@@ -410832,7 +410992,7 @@ var init_code_index2 = __esm(() => {
|
|
|
410832
410992
|
|
|
410833
410993
|
// node_modules/typescript/lib/typescript.js
|
|
410834
410994
|
var require_typescript2 = __commonJS((exports, module) => {
|
|
410835
|
-
var __dirname = "/
|
|
410995
|
+
var __dirname = "/sessions/friendly-inspiring-goldberg/mnt/UR-1.42.0/node_modules/typescript/lib", __filename = "/sessions/friendly-inspiring-goldberg/mnt/UR-1.42.0/node_modules/typescript/lib/typescript.js";
|
|
410836
410996
|
/*! *****************************************************************************
|
|
410837
410997
|
Copyright (c) Microsoft Corporation. All rights reserved.
|
|
410838
410998
|
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
|
@@ -590140,8 +590300,8 @@ function resolveAgentOverrides(allAgents, activeAgents) {
|
|
|
590140
590300
|
if (seen.has(key))
|
|
590141
590301
|
continue;
|
|
590142
590302
|
seen.add(key);
|
|
590143
|
-
const
|
|
590144
|
-
const overriddenBy =
|
|
590303
|
+
const active2 = activeMap.get(agent.agentType);
|
|
590304
|
+
const overriddenBy = active2 && active2.source !== agent.source ? active2.source : undefined;
|
|
590145
590305
|
resolved.push({ ...agent, overriddenBy });
|
|
590146
590306
|
}
|
|
590147
590307
|
return resolved;
|
|
@@ -596366,7 +596526,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
|
|
|
596366
596526
|
smapsRollup,
|
|
596367
596527
|
platform: process.platform,
|
|
596368
596528
|
nodeVersion: process.version,
|
|
596369
|
-
ccVersion: "1.
|
|
596529
|
+
ccVersion: "1.43.0"
|
|
596370
596530
|
};
|
|
596371
596531
|
}
|
|
596372
596532
|
async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
|
|
@@ -596952,7 +597112,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
596952
597112
|
var call137 = async () => {
|
|
596953
597113
|
return {
|
|
596954
597114
|
type: "text",
|
|
596955
|
-
value: "1.
|
|
597115
|
+
value: "1.43.0"
|
|
596956
597116
|
};
|
|
596957
597117
|
}, version2, version_default;
|
|
596958
597118
|
var init_version = __esm(() => {
|
|
@@ -607045,7 +607205,7 @@ function generateHtmlReport(data, insights) {
|
|
|
607045
607205
|
</html>`;
|
|
607046
607206
|
}
|
|
607047
607207
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
607048
|
-
const version3 = typeof MACRO !== "undefined" ? "1.
|
|
607208
|
+
const version3 = typeof MACRO !== "undefined" ? "1.43.0" : "unknown";
|
|
607049
607209
|
const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
|
|
607050
607210
|
const facets_summary = {
|
|
607051
607211
|
total: facets.size,
|
|
@@ -611325,7 +611485,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
611325
611485
|
init_settings2();
|
|
611326
611486
|
init_slowOperations();
|
|
611327
611487
|
init_uuid();
|
|
611328
|
-
VERSION5 = typeof MACRO !== "undefined" ? "1.
|
|
611488
|
+
VERSION5 = typeof MACRO !== "undefined" ? "1.43.0" : "unknown";
|
|
611329
611489
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
611330
611490
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
611331
611491
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -612530,7 +612690,7 @@ var init_filesystem = __esm(() => {
|
|
|
612530
612690
|
});
|
|
612531
612691
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
612532
612692
|
const nonce = randomBytes18(16).toString("hex");
|
|
612533
|
-
return join202(getURTempDir(), "bundled-skills", "1.
|
|
612693
|
+
return join202(getURTempDir(), "bundled-skills", "1.43.0", nonce);
|
|
612534
612694
|
});
|
|
612535
612695
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
612536
612696
|
});
|
|
@@ -618819,7 +618979,7 @@ function computeFingerprint(messageText2, version3) {
|
|
|
618819
618979
|
}
|
|
618820
618980
|
function computeFingerprintFromMessages(messages) {
|
|
618821
618981
|
const firstMessageText = extractFirstMessageText(messages);
|
|
618822
|
-
return computeFingerprint(firstMessageText, "1.
|
|
618982
|
+
return computeFingerprint(firstMessageText, "1.43.0");
|
|
618823
618983
|
}
|
|
618824
618984
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
618825
618985
|
var init_fingerprint = () => {};
|
|
@@ -620693,7 +620853,7 @@ async function sideQuery(opts) {
|
|
|
620693
620853
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
620694
620854
|
}
|
|
620695
620855
|
const messageText2 = extractFirstUserMessageText(messages);
|
|
620696
|
-
const fingerprint2 = computeFingerprint(messageText2, "1.
|
|
620856
|
+
const fingerprint2 = computeFingerprint(messageText2, "1.43.0");
|
|
620697
620857
|
const attributionHeader = getAttributionHeader(fingerprint2);
|
|
620698
620858
|
const systemBlocks = [
|
|
620699
620859
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -620977,7 +621137,7 @@ import {
|
|
|
620977
621137
|
stat as stat45,
|
|
620978
621138
|
unlink as unlink24
|
|
620979
621139
|
} from "fs/promises";
|
|
620980
|
-
import { createServer as
|
|
621140
|
+
import { createServer as createServer6 } from "net";
|
|
620981
621141
|
import { homedir as homedir33, platform as platform6 } from "os";
|
|
620982
621142
|
import { join as join205 } from "path";
|
|
620983
621143
|
function log(message, ...args) {
|
|
@@ -621053,7 +621213,7 @@ class ChromeNativeHost {
|
|
|
621053
621213
|
} catch {}
|
|
621054
621214
|
}
|
|
621055
621215
|
log(`Creating socket listener: ${this.socketPath}`);
|
|
621056
|
-
this.server =
|
|
621216
|
+
this.server = createServer6((socket) => this.handleMcpClient(socket));
|
|
621057
621217
|
await new Promise((resolve50, reject2) => {
|
|
621058
621218
|
this.server.listen(this.socketPath, () => {
|
|
621059
621219
|
log("Socket server listening for connections");
|
|
@@ -623541,7 +623701,7 @@ var init_managedEnv = __esm(() => {
|
|
|
623541
623701
|
});
|
|
623542
623702
|
|
|
623543
623703
|
// src/upstreamproxy/relay.ts
|
|
623544
|
-
import { createServer as
|
|
623704
|
+
import { createServer as createServer7 } from "net";
|
|
623545
623705
|
function encodeChunk(data) {
|
|
623546
623706
|
const len = data.length;
|
|
623547
623707
|
const varint = [];
|
|
@@ -623649,7 +623809,7 @@ function startBunRelay(wsUrl, authHeader, wsAuthHeader) {
|
|
|
623649
623809
|
async function startNodeRelay(wsUrl, authHeader, wsAuthHeader) {
|
|
623650
623810
|
nodeWSCtor = (await import("ws")).default;
|
|
623651
623811
|
const states = new WeakMap;
|
|
623652
|
-
const server2 =
|
|
623812
|
+
const server2 = createServer7((sock) => {
|
|
623653
623813
|
const st = newConnState();
|
|
623654
623814
|
states.set(sock, st);
|
|
623655
623815
|
const adapter2 = {
|
|
@@ -625430,7 +625590,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
625430
625590
|
slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
|
|
625431
625591
|
apiKeySource: getURHQApiKeyWithSource().source,
|
|
625432
625592
|
betas: getSdkBetas(),
|
|
625433
|
-
ur_version: "1.
|
|
625593
|
+
ur_version: "1.43.0",
|
|
625434
625594
|
output_style: outputStyle2,
|
|
625435
625595
|
agents: inputs.agents.map((agent) => agent.agentType),
|
|
625436
625596
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
|
|
@@ -640058,7 +640218,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
640058
640218
|
function getSemverPart(version3) {
|
|
640059
640219
|
return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
|
|
640060
640220
|
}
|
|
640061
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.
|
|
640221
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.43.0") {
|
|
640062
640222
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react226.useState(() => getSemverPart(initialVersion));
|
|
640063
640223
|
if (!updatedVersion) {
|
|
640064
640224
|
return null;
|
|
@@ -640107,7 +640267,7 @@ function AutoUpdater({
|
|
|
640107
640267
|
return;
|
|
640108
640268
|
}
|
|
640109
640269
|
if (false) {}
|
|
640110
|
-
const currentVersion = "1.
|
|
640270
|
+
const currentVersion = "1.43.0";
|
|
640111
640271
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
640112
640272
|
let latestVersion = await getLatestVersion(channel);
|
|
640113
640273
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -640336,12 +640496,12 @@ function NativeAutoUpdater({
|
|
|
640336
640496
|
logEvent("tengu_native_auto_updater_start", {});
|
|
640337
640497
|
try {
|
|
640338
640498
|
const maxVersion = await getMaxVersion();
|
|
640339
|
-
if (maxVersion && gt("1.
|
|
640499
|
+
if (maxVersion && gt("1.43.0", maxVersion)) {
|
|
640340
640500
|
const msg = await getMaxVersionMessage();
|
|
640341
640501
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
640342
640502
|
}
|
|
640343
640503
|
const result = await installLatest(channel);
|
|
640344
|
-
const currentVersion = "1.
|
|
640504
|
+
const currentVersion = "1.43.0";
|
|
640345
640505
|
const latencyMs = Date.now() - startTime;
|
|
640346
640506
|
if (result.lockFailed) {
|
|
640347
640507
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -640478,17 +640638,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
640478
640638
|
const maxVersion = await getMaxVersion();
|
|
640479
640639
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
640480
640640
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
640481
|
-
if (gte("1.
|
|
640482
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.
|
|
640641
|
+
if (gte("1.43.0", maxVersion)) {
|
|
640642
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.43.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
640483
640643
|
setUpdateAvailable(false);
|
|
640484
640644
|
return;
|
|
640485
640645
|
}
|
|
640486
640646
|
latest = maxVersion;
|
|
640487
640647
|
}
|
|
640488
|
-
const hasUpdate = latest && !gte("1.
|
|
640648
|
+
const hasUpdate = latest && !gte("1.43.0", latest) && !shouldSkipVersion(latest);
|
|
640489
640649
|
setUpdateAvailable(!!hasUpdate);
|
|
640490
640650
|
if (hasUpdate) {
|
|
640491
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.
|
|
640651
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.43.0"} -> ${latest}`);
|
|
640492
640652
|
}
|
|
640493
640653
|
};
|
|
640494
640654
|
$3[0] = t1;
|
|
@@ -640522,7 +640682,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
640522
640682
|
wrap: "truncate",
|
|
640523
640683
|
children: [
|
|
640524
640684
|
"currentVersion: ",
|
|
640525
|
-
"1.
|
|
640685
|
+
"1.43.0"
|
|
640526
640686
|
]
|
|
640527
640687
|
}, undefined, true, undefined, this);
|
|
640528
640688
|
$3[3] = verbose;
|
|
@@ -652974,7 +653134,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
652974
653134
|
project_dir: getOriginalCwd(),
|
|
652975
653135
|
added_dirs: addedDirs
|
|
652976
653136
|
},
|
|
652977
|
-
version: "1.
|
|
653137
|
+
version: "1.43.0",
|
|
652978
653138
|
output_style: {
|
|
652979
653139
|
name: outputStyleName
|
|
652980
653140
|
},
|
|
@@ -653057,7 +653217,7 @@ function StatusLineInner({
|
|
|
653057
653217
|
const taskValues = Object.values(tasks2);
|
|
653058
653218
|
const taskRunningCount = taskValues.filter((task2) => task2.status === "running" || task2.status === "pending").length;
|
|
653059
653219
|
const defaultStatusLineText = buildDefaultStatusBar({
|
|
653060
|
-
version: "1.
|
|
653220
|
+
version: "1.43.0",
|
|
653061
653221
|
providerLabel: providerRuntime.providerLabel,
|
|
653062
653222
|
authMode: providerRuntime.authLabel,
|
|
653063
653223
|
model: providerRuntime.model ?? renderModelName(mainLoopModel),
|
|
@@ -655371,9 +655531,9 @@ function useSwarmBanner() {
|
|
|
655371
655531
|
};
|
|
655372
655532
|
}
|
|
655373
655533
|
}
|
|
655374
|
-
const
|
|
655375
|
-
if (
|
|
655376
|
-
const task2 =
|
|
655534
|
+
const active2 = getActiveAgentForInput(state2);
|
|
655535
|
+
if (active2.type === "named_agent") {
|
|
655536
|
+
const task2 = active2.task;
|
|
655377
655537
|
let name;
|
|
655378
655538
|
for (const [n3, id] of state2.agentNameRegistry) {
|
|
655379
655539
|
if (id === task2.id) {
|
|
@@ -664545,7 +664705,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
|
|
|
664545
664705
|
} catch {}
|
|
664546
664706
|
const data = {
|
|
664547
664707
|
trigger: trigger2,
|
|
664548
|
-
version: "1.
|
|
664708
|
+
version: "1.43.0",
|
|
664549
664709
|
platform: process.platform,
|
|
664550
664710
|
transcript,
|
|
664551
664711
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -671770,8 +671930,8 @@ function applyModalPagerAction(s, act, onBeforeJump) {
|
|
|
671770
671930
|
}
|
|
671771
671931
|
case "fullPageUp":
|
|
671772
671932
|
case "fullPageDown": {
|
|
671773
|
-
const
|
|
671774
|
-
const d = act === "fullPageDown" ?
|
|
671933
|
+
const page2 = Math.max(1, s.getViewportHeight());
|
|
671934
|
+
const d = act === "fullPageDown" ? page2 : -page2;
|
|
671775
671935
|
onBeforeJump(d);
|
|
671776
671936
|
return jumpBy(s, d);
|
|
671777
671937
|
}
|
|
@@ -676430,7 +676590,7 @@ function WelcomeV2() {
|
|
|
676430
676590
|
dimColor: true,
|
|
676431
676591
|
children: [
|
|
676432
676592
|
"v",
|
|
676433
|
-
"1.
|
|
676593
|
+
"1.43.0"
|
|
676434
676594
|
]
|
|
676435
676595
|
}, undefined, true, undefined, this)
|
|
676436
676596
|
]
|
|
@@ -677690,7 +677850,7 @@ function completeOnboarding() {
|
|
|
677690
677850
|
saveGlobalConfig((current) => ({
|
|
677691
677851
|
...current,
|
|
677692
677852
|
hasCompletedOnboarding: true,
|
|
677693
|
-
lastOnboardingVersion: "1.
|
|
677853
|
+
lastOnboardingVersion: "1.43.0"
|
|
677694
677854
|
}));
|
|
677695
677855
|
}
|
|
677696
677856
|
function showDialog(root2, renderer) {
|
|
@@ -682727,7 +682887,7 @@ function appendToLog(path24, message) {
|
|
|
682727
682887
|
cwd: getFsImplementation().cwd(),
|
|
682728
682888
|
userType: process.env.USER_TYPE,
|
|
682729
682889
|
sessionId: getSessionId(),
|
|
682730
|
-
version: "1.
|
|
682890
|
+
version: "1.43.0"
|
|
682731
682891
|
};
|
|
682732
682892
|
getLogWriter(path24).write(messageWithTimestamp);
|
|
682733
682893
|
}
|
|
@@ -684225,11 +684385,11 @@ class CCRClient {
|
|
|
684225
684385
|
if (cursor) {
|
|
684226
684386
|
url3.searchParams.set("cursor", cursor);
|
|
684227
684387
|
}
|
|
684228
|
-
const
|
|
684229
|
-
if (!
|
|
684388
|
+
const page2 = await this.getWithRetry(url3.toString(), authHeaders, context4);
|
|
684389
|
+
if (!page2)
|
|
684230
684390
|
return null;
|
|
684231
|
-
allEvents.push(...
|
|
684232
|
-
cursor =
|
|
684391
|
+
allEvents.push(...page2.data ?? []);
|
|
684392
|
+
cursor = page2.next_cursor;
|
|
684233
684393
|
} while (cursor);
|
|
684234
684394
|
logForDebugging(`CCRClient: Read ${allEvents.length} internal events from ${path24}${params.subagents ? " (subagents)" : ""}`);
|
|
684235
684395
|
return allEvents;
|
|
@@ -686821,8 +686981,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
686821
686981
|
}
|
|
686822
686982
|
async function checkEnvLessBridgeMinVersion() {
|
|
686823
686983
|
const cfg = await getEnvLessBridgeConfig();
|
|
686824
|
-
if (cfg.min_version && lt("1.
|
|
686825
|
-
return `Your version of UR (${"1.
|
|
686984
|
+
if (cfg.min_version && lt("1.43.0", cfg.min_version)) {
|
|
686985
|
+
return `Your version of UR (${"1.43.0"}) is too old for Remote Control.
|
|
686826
686986
|
Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
|
|
686827
686987
|
}
|
|
686828
686988
|
return null;
|
|
@@ -687296,7 +687456,7 @@ async function initBridgeCore(params) {
|
|
|
687296
687456
|
const rawApi = createBridgeApiClient({
|
|
687297
687457
|
baseUrl,
|
|
687298
687458
|
getAccessToken,
|
|
687299
|
-
runnerVersion: "1.
|
|
687459
|
+
runnerVersion: "1.43.0",
|
|
687300
687460
|
onDebug: logForDebugging,
|
|
687301
687461
|
onAuth401,
|
|
687302
687462
|
getTrustedDeviceToken
|
|
@@ -692978,7 +693138,7 @@ async function startMCPServer(cwd3, debug2, verbose) {
|
|
|
692978
693138
|
setCwd(cwd3);
|
|
692979
693139
|
const server2 = new Server({
|
|
692980
693140
|
name: "ur/tengu",
|
|
692981
|
-
version: "1.
|
|
693141
|
+
version: "1.43.0"
|
|
692982
693142
|
}, {
|
|
692983
693143
|
capabilities: {
|
|
692984
693144
|
tools: {}
|
|
@@ -693542,8 +693702,8 @@ async function providerListHandler(options2 = {}) {
|
|
|
693542
693702
|
}
|
|
693543
693703
|
async function providerStatusHandler(options2 = {}) {
|
|
693544
693704
|
const settings = getInitialSettings();
|
|
693545
|
-
const
|
|
693546
|
-
const result = await doctorProvider(
|
|
693705
|
+
const active2 = getActiveProviderSettings(settings).active ?? "ollama";
|
|
693706
|
+
const result = await doctorProvider(active2, { settings });
|
|
693547
693707
|
writeOutput(formatProviderStatus(result, Boolean(options2.json)));
|
|
693548
693708
|
process.exit(result.ok ? 0 : 1);
|
|
693549
693709
|
}
|
|
@@ -693558,15 +693718,15 @@ async function providerDoctorHandler(providerArg, options2 = {}) {
|
|
|
693558
693718
|
provider = resolved;
|
|
693559
693719
|
}
|
|
693560
693720
|
const settings = getInitialSettings();
|
|
693561
|
-
const
|
|
693562
|
-
const result = await doctorProvider(provider ??
|
|
693721
|
+
const active2 = getActiveProviderSettings(settings).active ?? "ollama";
|
|
693722
|
+
const result = await doctorProvider(provider ?? active2, { settings });
|
|
693563
693723
|
writeOutput(formatProviderDoctor(result, Boolean(options2.json)));
|
|
693564
693724
|
process.exit(result.ok ? 0 : 1);
|
|
693565
693725
|
}
|
|
693566
693726
|
async function providerModelsHandler(providerArg, options2 = {}) {
|
|
693567
693727
|
const settings = getInitialSettings();
|
|
693568
|
-
const
|
|
693569
|
-
const provider = providerArg ? resolveProviderId(providerArg) :
|
|
693728
|
+
const active2 = getActiveProviderSettings(settings).active ?? "ollama";
|
|
693729
|
+
const provider = providerArg ? resolveProviderId(providerArg) : active2;
|
|
693570
693730
|
if (!provider) {
|
|
693571
693731
|
writeError(`Unknown provider "${providerArg}". Run: ur provider list`);
|
|
693572
693732
|
process.exit(1);
|
|
@@ -695020,7 +695180,7 @@ async function update() {
|
|
|
695020
695180
|
logEvent("tengu_update_check", {});
|
|
695021
695181
|
const diagnostic = await getDoctorDiagnostic();
|
|
695022
695182
|
const result = await checkUpgradeStatus({
|
|
695023
|
-
currentVersion: "1.
|
|
695183
|
+
currentVersion: "1.43.0",
|
|
695024
695184
|
packageName: UR_AGENT_PACKAGE_NAME,
|
|
695025
695185
|
installationType: diagnostic.installationType,
|
|
695026
695186
|
latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
|
|
@@ -696266,7 +696426,7 @@ ${customInstructions}` : customInstructions;
|
|
|
696266
696426
|
}
|
|
696267
696427
|
}
|
|
696268
696428
|
logForDiagnosticsNoPII("info", "started", {
|
|
696269
|
-
version: "1.
|
|
696429
|
+
version: "1.43.0",
|
|
696270
696430
|
is_native_binary: isInBundledMode()
|
|
696271
696431
|
});
|
|
696272
696432
|
registerCleanup(async () => {
|
|
@@ -697052,7 +697212,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
697052
697212
|
pendingHookMessages
|
|
697053
697213
|
}, renderAndRun);
|
|
697054
697214
|
}
|
|
697055
|
-
}).version("1.
|
|
697215
|
+
}).version("1.43.0 (UR-Nexus)", "-v, --version", "Output the version number");
|
|
697056
697216
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
697057
697217
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
697058
697218
|
if (canUserConfigureAdvisor()) {
|
|
@@ -697967,7 +698127,7 @@ if (false) {}
|
|
|
697967
698127
|
async function main2() {
|
|
697968
698128
|
const args = process.argv.slice(2);
|
|
697969
698129
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
697970
|
-
console.log(`${"1.
|
|
698130
|
+
console.log(`${"1.43.0"} (UR-Nexus)`);
|
|
697971
698131
|
return;
|
|
697972
698132
|
}
|
|
697973
698133
|
if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {
|
package/documentation/index.html
CHANGED
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
<main id="content" class="content">
|
|
45
45
|
<header class="topbar">
|
|
46
46
|
<div>
|
|
47
|
-
<p class="eyebrow">Version 1.
|
|
47
|
+
<p class="eyebrow">Version 1.43.0</p>
|
|
48
48
|
<h1>UR-Nexus Documentation</h1>
|
|
49
49
|
<p class="lead">A practical, tutorial-style reference for installing, configuring, automating, extending, and operating UR-Nexus.</p>
|
|
50
50
|
</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.43.0",
|
|
6
6
|
"publisher": "ur-nexus",
|
|
7
7
|
"engines": {
|
|
8
8
|
"vscode": "^1.92.0"
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ur-agent",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "UR-Nexus
|
|
3
|
+
"version": "1.43.0",
|
|
4
|
+
"description": "UR-Nexus \u2014 autonomous engineering workflow engine (plan, execute, test, verify, document, benchmark, reproduce)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "bun@1.3.14",
|
|
7
7
|
"engines": {
|