ur-agent 1.42.0 → 1.43.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/README.md +2 -1
- package/dist/cli.js +343 -99
- package/documentation/index.html +1 -1
- package/extensions/vscode-ur-inline-diffs/package.json +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.43.1
|
|
4
|
+
|
|
5
|
+
- Artifacts page renders diffs VS Code-style: side-by-side/inline views with
|
|
6
|
+
syntax highlighting via diff2html (plain-text fallback when offline). New
|
|
7
|
+
live view `/diff` shows current working-tree changes without manual capture,
|
|
8
|
+
with a one-click "Capture as artifact" button (`POST /api/capture-diff`,
|
|
9
|
+
`GET /api/diff`).
|
|
10
|
+
- Tolerate empty-string parameter names in model tool calls: stripped before
|
|
11
|
+
validation instead of failing with `An unexpected parameter \`\` was
|
|
12
|
+
provided`.
|
|
13
|
+
|
|
14
|
+
## 1.43.0
|
|
15
|
+
|
|
16
|
+
- Add `ur artifacts serve [--port 4180]`: a local web page for artifacts.
|
|
17
|
+
`GET /artifacts/<id>` renders one artifact (status, summary, feedback,
|
|
18
|
+
content), `/` lists all, with `/artifacts/<id>/raw` and `/api/artifacts[/<id>]`
|
|
19
|
+
endpoints. Bound to 127.0.0.1; stop with `ur artifacts serve --stop`.
|
|
20
|
+
|
|
3
21
|
## 1.42.0
|
|
4
22
|
|
|
5
23
|
- Project safety policy no longer hard-blocks commands. Risky or deny-matched
|
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.1"}`;
|
|
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.1"} (${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.1"}${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.1",
|
|
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.1".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.1",
|
|
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.1"
|
|
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.1");
|
|
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.1", 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.1"}.${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.1";
|
|
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.1";
|
|
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.1",
|
|
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.1",
|
|
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.1", 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.1"}) 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.1"
|
|
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.1"
|
|
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.1" : "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.1", maxVersion)) {
|
|
243865
|
+
logForDebugging(`Native installer: current version ${"1.43.1"} 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.1" && 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,
|
|
@@ -329888,6 +329888,17 @@ ${EXPLANATORY_FEATURE_PROMPT}`
|
|
|
329888
329888
|
});
|
|
329889
329889
|
});
|
|
329890
329890
|
|
|
329891
|
+
// src/utils/toolInputSanitize.ts
|
|
329892
|
+
function stripEmptyParameterNames(input) {
|
|
329893
|
+
if (typeof input !== "object" || input === null || Array.isArray(input)) {
|
|
329894
|
+
return { input, stripped: false };
|
|
329895
|
+
}
|
|
329896
|
+
if (!("" in input))
|
|
329897
|
+
return { input, stripped: false };
|
|
329898
|
+
const { "": _dropped, ...rest } = input;
|
|
329899
|
+
return { input: rest, stripped: true };
|
|
329900
|
+
}
|
|
329901
|
+
|
|
329891
329902
|
// src/utils/messages.ts
|
|
329892
329903
|
import { randomUUID as randomUUID32 } from "crypto";
|
|
329893
329904
|
function getTeammateMailbox() {
|
|
@@ -331181,6 +331192,13 @@ function normalizeContentFromAPI(contentBlocks, tools, agentId) {
|
|
|
331181
331192
|
} else {
|
|
331182
331193
|
normalizedInput = contentBlock.input;
|
|
331183
331194
|
}
|
|
331195
|
+
const sanitized = stripEmptyParameterNames(normalizedInput);
|
|
331196
|
+
if (sanitized.stripped) {
|
|
331197
|
+
normalizedInput = sanitized.input;
|
|
331198
|
+
logEvent("tengu_tool_input_empty_key_stripped", {
|
|
331199
|
+
toolName: sanitizeToolNameForAnalytics(contentBlock.name)
|
|
331200
|
+
});
|
|
331201
|
+
}
|
|
331184
331202
|
if (typeof normalizedInput === "object" && normalizedInput !== null) {
|
|
331185
331203
|
const tool = findToolByName(tools, contentBlock.name);
|
|
331186
331204
|
if (tool) {
|
|
@@ -340844,7 +340862,7 @@ function Feedback({
|
|
|
340844
340862
|
platform: env2.platform,
|
|
340845
340863
|
gitRepo: envInfo.isGit,
|
|
340846
340864
|
terminal: env2.terminal,
|
|
340847
|
-
version: "1.
|
|
340865
|
+
version: "1.43.1",
|
|
340848
340866
|
transcript: normalizeMessagesForAPI(messages),
|
|
340849
340867
|
errors: sanitizedErrors,
|
|
340850
340868
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -341036,7 +341054,7 @@ function Feedback({
|
|
|
341036
341054
|
", ",
|
|
341037
341055
|
env2.terminal,
|
|
341038
341056
|
", v",
|
|
341039
|
-
"1.
|
|
341057
|
+
"1.43.1"
|
|
341040
341058
|
]
|
|
341041
341059
|
}, undefined, true, undefined, this)
|
|
341042
341060
|
]
|
|
@@ -341142,7 +341160,7 @@ ${sanitizedDescription}
|
|
|
341142
341160
|
` + `**Environment Info**
|
|
341143
341161
|
` + `- Platform: ${env2.platform}
|
|
341144
341162
|
` + `- Terminal: ${env2.terminal}
|
|
341145
|
-
` + `- Version: ${"1.
|
|
341163
|
+
` + `- Version: ${"1.43.1"}
|
|
341146
341164
|
` + `- Feedback ID: ${feedbackId}
|
|
341147
341165
|
` + `
|
|
341148
341166
|
**Errors**
|
|
@@ -344253,7 +344271,7 @@ function buildPrimarySection() {
|
|
|
344253
344271
|
}, undefined, false, undefined, this);
|
|
344254
344272
|
return [{
|
|
344255
344273
|
label: "Version",
|
|
344256
|
-
value: "1.
|
|
344274
|
+
value: "1.43.1"
|
|
344257
344275
|
}, {
|
|
344258
344276
|
label: "Session name",
|
|
344259
344277
|
value: nameValue
|
|
@@ -347554,7 +347572,7 @@ function Config({
|
|
|
347554
347572
|
}
|
|
347555
347573
|
}, undefined, false, undefined, this)
|
|
347556
347574
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime177.jsxDEV(ChannelDowngradeDialog, {
|
|
347557
|
-
currentVersion: "1.
|
|
347575
|
+
currentVersion: "1.43.1",
|
|
347558
347576
|
onChoice: (choice) => {
|
|
347559
347577
|
setShowSubmenu(null);
|
|
347560
347578
|
setTabsHidden(false);
|
|
@@ -347566,7 +347584,7 @@ function Config({
|
|
|
347566
347584
|
autoUpdatesChannel: "stable"
|
|
347567
347585
|
};
|
|
347568
347586
|
if (choice === "stay") {
|
|
347569
|
-
newSettings.minimumVersion = "1.
|
|
347587
|
+
newSettings.minimumVersion = "1.43.1";
|
|
347570
347588
|
}
|
|
347571
347589
|
updateSettingsForSource("userSettings", newSettings);
|
|
347572
347590
|
setSettingsData((prev_27) => ({
|
|
@@ -355636,7 +355654,7 @@ function HelpV2(t0) {
|
|
|
355636
355654
|
let t6;
|
|
355637
355655
|
if ($3[31] !== tabs) {
|
|
355638
355656
|
t6 = /* @__PURE__ */ jsx_dev_runtime204.jsxDEV(Tabs, {
|
|
355639
|
-
title: `UR v${"1.
|
|
355657
|
+
title: `UR v${"1.43.1"}`,
|
|
355640
355658
|
color: "professionalBlue",
|
|
355641
355659
|
defaultTab: "general",
|
|
355642
355660
|
children: tabs
|
|
@@ -356382,7 +356400,7 @@ function buildToolUseContext(tools, readFileStateCache) {
|
|
|
356382
356400
|
async function handleInitialize(options2) {
|
|
356383
356401
|
return {
|
|
356384
356402
|
name: "UR",
|
|
356385
|
-
version: "1.
|
|
356403
|
+
version: "1.43.1",
|
|
356386
356404
|
protocolVersion: "0.1.0",
|
|
356387
356405
|
workspaceRoot: options2.cwd,
|
|
356388
356406
|
capabilities: {
|
|
@@ -376524,7 +376542,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
376524
376542
|
return [];
|
|
376525
376543
|
}
|
|
376526
376544
|
}
|
|
376527
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.
|
|
376545
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.43.1") {
|
|
376528
376546
|
if (process.env.USER_TYPE === "ant") {
|
|
376529
376547
|
const changelog = "";
|
|
376530
376548
|
if (changelog) {
|
|
@@ -376551,7 +376569,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.42.0")
|
|
|
376551
376569
|
releaseNotes
|
|
376552
376570
|
};
|
|
376553
376571
|
}
|
|
376554
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.
|
|
376572
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.43.1") {
|
|
376555
376573
|
if (process.env.USER_TYPE === "ant") {
|
|
376556
376574
|
const changelog = "";
|
|
376557
376575
|
if (changelog) {
|
|
@@ -377730,7 +377748,7 @@ function getRecentActivitySync() {
|
|
|
377730
377748
|
return cachedActivity;
|
|
377731
377749
|
}
|
|
377732
377750
|
function getLogoDisplayData() {
|
|
377733
|
-
const version2 = process.env.DEMO_VERSION ?? "1.
|
|
377751
|
+
const version2 = process.env.DEMO_VERSION ?? "1.43.1";
|
|
377734
377752
|
const serverUrl = getDirectConnectServerUrl();
|
|
377735
377753
|
const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd());
|
|
377736
377754
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -378519,7 +378537,7 @@ function LogoV2() {
|
|
|
378519
378537
|
if ($3[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
378520
378538
|
t2 = () => {
|
|
378521
378539
|
const currentConfig2 = getGlobalConfig();
|
|
378522
|
-
if (currentConfig2.lastReleaseNotesSeen === "1.
|
|
378540
|
+
if (currentConfig2.lastReleaseNotesSeen === "1.43.1") {
|
|
378523
378541
|
return;
|
|
378524
378542
|
}
|
|
378525
378543
|
saveGlobalConfig(_temp326);
|
|
@@ -379204,12 +379222,12 @@ function LogoV2() {
|
|
|
379204
379222
|
return t41;
|
|
379205
379223
|
}
|
|
379206
379224
|
function _temp326(current) {
|
|
379207
|
-
if (current.lastReleaseNotesSeen === "1.
|
|
379225
|
+
if (current.lastReleaseNotesSeen === "1.43.1") {
|
|
379208
379226
|
return current;
|
|
379209
379227
|
}
|
|
379210
379228
|
return {
|
|
379211
379229
|
...current,
|
|
379212
|
-
lastReleaseNotesSeen: "1.
|
|
379230
|
+
lastReleaseNotesSeen: "1.43.1"
|
|
379213
379231
|
};
|
|
379214
379232
|
}
|
|
379215
379233
|
function _temp243(s_0) {
|
|
@@ -404532,15 +404550,19 @@ function deleteArtifact(cwd2, id) {
|
|
|
404532
404550
|
saveManifest3(cwd2, manifest);
|
|
404533
404551
|
return true;
|
|
404534
404552
|
}
|
|
404535
|
-
async function
|
|
404553
|
+
async function getWorkingDiff(cwd2, exec6 = defaultExec) {
|
|
404536
404554
|
const diff3 = await exec6("git", ["diff", "HEAD"], cwd2);
|
|
404537
|
-
|
|
404555
|
+
return diff3.stdout;
|
|
404556
|
+
}
|
|
404557
|
+
async function captureDiff2(cwd2, title = "Working tree diff", exec6 = defaultExec) {
|
|
404558
|
+
const stdout = await getWorkingDiff(cwd2, exec6);
|
|
404559
|
+
if (!stdout.trim())
|
|
404538
404560
|
return null;
|
|
404539
|
-
const files = (
|
|
404561
|
+
const files = (stdout.match(/^\+\+\+ /gm) ?? []).length;
|
|
404540
404562
|
return recordArtifact(cwd2, {
|
|
404541
404563
|
kind: "diff",
|
|
404542
404564
|
title,
|
|
404543
|
-
body:
|
|
404565
|
+
body: stdout,
|
|
404544
404566
|
summary: `${files} file(s) changed`
|
|
404545
404567
|
});
|
|
404546
404568
|
}
|
|
@@ -406936,6 +406958,201 @@ var init_context_pack2 = __esm(() => {
|
|
|
406936
406958
|
context_pack_default = contextPack;
|
|
406937
406959
|
});
|
|
406938
406960
|
|
|
406961
|
+
// src/services/agents/artifactsServer.ts
|
|
406962
|
+
import { createServer as createServer5 } from "http";
|
|
406963
|
+
function page(title, body, head = "") {
|
|
406964
|
+
return `<!doctype html>
|
|
406965
|
+
<html lang="en">
|
|
406966
|
+
<head>
|
|
406967
|
+
<meta charset="utf-8">
|
|
406968
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
406969
|
+
<title>${escapeXmlAttr(title)}</title>${head}
|
|
406970
|
+
<style>
|
|
406971
|
+
:root { color-scheme: light dark; }
|
|
406972
|
+
body { font-family: ui-sans-serif, system-ui, sans-serif; max-width: 1200px; margin: 2rem auto; padding: 0 1rem; line-height: 1.5; }
|
|
406973
|
+
a { color: #4078c0; text-decoration: none; }
|
|
406974
|
+
a:hover { text-decoration: underline; }
|
|
406975
|
+
table { border-collapse: collapse; width: 100%; }
|
|
406976
|
+
th, td { text-align: left; padding: .4rem .6rem; border-bottom: 1px solid #8884; }
|
|
406977
|
+
pre { background: #8881; padding: 1rem; border-radius: 6px; overflow-x: auto; }
|
|
406978
|
+
.badge { padding: .1rem .5rem; border-radius: 999px; color: #fff; font-size: .8rem; }
|
|
406979
|
+
.meta { color: #888; font-size: .9rem; }
|
|
406980
|
+
.feedback { border-left: 3px solid #8884; padding-left: .8rem; margin: .5rem 0; }
|
|
406981
|
+
.btn { display: inline-block; padding: .35rem .9rem; border: 1px solid #8886; border-radius: 6px; background: #8881; cursor: pointer; font-size: .9rem; color: inherit; }
|
|
406982
|
+
.btn:hover { background: #8882; }
|
|
406983
|
+
.toolbar { margin: .8rem 0; display: flex; gap: .5rem; align-items: center; }
|
|
406984
|
+
</style>
|
|
406985
|
+
</head>
|
|
406986
|
+
<body>${body}</body>
|
|
406987
|
+
</html>
|
|
406988
|
+
`;
|
|
406989
|
+
}
|
|
406990
|
+
function badge(status2) {
|
|
406991
|
+
return `<span class="badge" style="background:${STATUS_COLOR[status2]}">${status2}</span>`;
|
|
406992
|
+
}
|
|
406993
|
+
function jsString(value) {
|
|
406994
|
+
return JSON.stringify(value).replace(/</g, "\\u003c");
|
|
406995
|
+
}
|
|
406996
|
+
function isDiffArtifact(artifact) {
|
|
406997
|
+
return artifact.kind === "diff" || (artifact.file?.endsWith(".patch") ?? false);
|
|
406998
|
+
}
|
|
406999
|
+
function renderDiffBlock(diff3) {
|
|
407000
|
+
return `
|
|
407001
|
+
<div class="toolbar" id="diff-toggle" style="display:none">
|
|
407002
|
+
<button class="btn" onclick="__drawDiff('side-by-side')">Side by side</button>
|
|
407003
|
+
<button class="btn" onclick="__drawDiff('line-by-line')">Inline</button>
|
|
407004
|
+
</div>
|
|
407005
|
+
<div id="diff-view"></div>
|
|
407006
|
+
<pre id="diff-fallback">${escapeXmlAttr(diff3)}</pre>
|
|
407007
|
+
<script>
|
|
407008
|
+
(function () {
|
|
407009
|
+
var diff = ${jsString(diff3)};
|
|
407010
|
+
window.__drawDiff = function (fmt) {
|
|
407011
|
+
if (typeof Diff2HtmlUI === 'undefined' || !diff.trim()) return;
|
|
407012
|
+
var ui = new Diff2HtmlUI(document.getElementById('diff-view'), diff, {
|
|
407013
|
+
outputFormat: fmt,
|
|
407014
|
+
drawFileList: true,
|
|
407015
|
+
matching: 'lines',
|
|
407016
|
+
highlight: true,
|
|
407017
|
+
colorScheme: 'auto',
|
|
407018
|
+
});
|
|
407019
|
+
ui.draw();
|
|
407020
|
+
ui.highlightCode();
|
|
407021
|
+
document.getElementById('diff-fallback').style.display = 'none';
|
|
407022
|
+
document.getElementById('diff-toggle').style.display = 'flex';
|
|
407023
|
+
};
|
|
407024
|
+
window.__drawDiff('side-by-side');
|
|
407025
|
+
})();
|
|
407026
|
+
</script>`;
|
|
407027
|
+
}
|
|
407028
|
+
function renderArtifactList(artifacts) {
|
|
407029
|
+
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(`
|
|
407030
|
+
`);
|
|
407031
|
+
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>";
|
|
407032
|
+
return page("Artifacts", `<h1>Artifacts</h1><p><a class="btn" href="/diff">Current working-tree changes</a></p>${table}`);
|
|
407033
|
+
}
|
|
407034
|
+
function renderArtifactPage(artifact, body) {
|
|
407035
|
+
const feedback2 = artifact.feedback.map((f) => `<div class="feedback"><span class="meta">${escapeXmlAttr(f.at)}</span><br>${escapeXmlAttr(f.text)}</div>`).join(`
|
|
407036
|
+
`);
|
|
407037
|
+
const diffView = body !== null && isDiffArtifact(artifact);
|
|
407038
|
+
const parts = [
|
|
407039
|
+
`<p><a href="/">← all artifacts</a></p>`,
|
|
407040
|
+
`<h1>Artifact ${escapeXmlAttr(artifact.id)} <span class="meta">[${escapeXmlAttr(artifact.kind)}]</span> ${badge(artifact.status)}</h1>`,
|
|
407041
|
+
`<p><strong>${escapeXmlAttr(artifact.title)}</strong></p>`,
|
|
407042
|
+
artifact.summary ? `<p>${escapeXmlAttr(artifact.summary)}</p>` : "",
|
|
407043
|
+
`<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>`,
|
|
407044
|
+
artifact.links?.claims?.length ? `<p class="meta">claims: ${artifact.links.claims.map(escapeXmlAttr).join(", ")}</p>` : "",
|
|
407045
|
+
feedback2 ? `<h2>Feedback</h2>${feedback2}` : "",
|
|
407046
|
+
body !== null ? `<h2>Content</h2>${diffView ? renderDiffBlock(body) : `<pre>${escapeXmlAttr(body)}</pre>`}` : ""
|
|
407047
|
+
];
|
|
407048
|
+
return page(`Artifact ${artifact.id} \u2014 ${artifact.title}`, parts.filter(Boolean).join(`
|
|
407049
|
+
`), diffView ? DIFF_VIEWER_HEAD : "");
|
|
407050
|
+
}
|
|
407051
|
+
function renderLiveDiffPage(diff3) {
|
|
407052
|
+
const hasDiff = diff3.trim().length > 0;
|
|
407053
|
+
const content = hasDiff ? `${renderDiffBlock(diff3)}
|
|
407054
|
+
<script>
|
|
407055
|
+
function __captureDiff() {
|
|
407056
|
+
fetch('/api/capture-diff', { method: 'POST' })
|
|
407057
|
+
.then(function (r) { return r.json() })
|
|
407058
|
+
.then(function (d) { if (d.id) location = '/artifacts/' + d.id; else alert(d.error || 'No changes to capture.') })
|
|
407059
|
+
.catch(function (e) { alert(String(e)) })
|
|
407060
|
+
}
|
|
407061
|
+
</script>` : "<p>No working-tree changes.</p>";
|
|
407062
|
+
const captureButton = hasDiff ? '<div class="toolbar"><button class="btn" onclick="__captureDiff()">Capture as artifact</button></div>' : "";
|
|
407063
|
+
return page("Working tree changes", `<p><a href="/">← all artifacts</a></p><h1>Working tree changes</h1>${captureButton}${content}`, hasDiff ? DIFF_VIEWER_HEAD : "");
|
|
407064
|
+
}
|
|
407065
|
+
function notFound4(id) {
|
|
407066
|
+
return page("Artifact not found", `<h1>Artifact not found: ${escapeXmlAttr(id)}</h1><p><a href="/">← all artifacts</a></p>`);
|
|
407067
|
+
}
|
|
407068
|
+
async function handleArtifactsRequest(cwd2, url3, exec6) {
|
|
407069
|
+
const path22 = decodeURIComponent(new URL(url3, "http://localhost").pathname).replace(/\/+$/, "") || "/";
|
|
407070
|
+
if (path22 === "/" || path22 === "/artifacts") {
|
|
407071
|
+
return { status: 200, type: "text/html", body: renderArtifactList(listArtifacts(cwd2)) };
|
|
407072
|
+
}
|
|
407073
|
+
if (path22 === "/diff") {
|
|
407074
|
+
return { status: 200, type: "text/html", body: renderLiveDiffPage(await getWorkingDiff(cwd2, exec6)) };
|
|
407075
|
+
}
|
|
407076
|
+
if (path22 === "/api/diff") {
|
|
407077
|
+
return { status: 200, type: "text/plain", body: await getWorkingDiff(cwd2, exec6) };
|
|
407078
|
+
}
|
|
407079
|
+
if (path22 === "/api/artifacts") {
|
|
407080
|
+
return { status: 200, type: "application/json", body: JSON.stringify({ artifacts: listArtifacts(cwd2) }, null, 2) };
|
|
407081
|
+
}
|
|
407082
|
+
let match = path22.match(/^\/api\/artifacts\/([^/]+)$/);
|
|
407083
|
+
if (match) {
|
|
407084
|
+
const artifact = getArtifact(cwd2, match[1]);
|
|
407085
|
+
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]}` }) };
|
|
407086
|
+
}
|
|
407087
|
+
match = path22.match(/^\/artifacts\/([^/]+)\/raw$/);
|
|
407088
|
+
if (match) {
|
|
407089
|
+
const body = readArtifactBody(cwd2, match[1]);
|
|
407090
|
+
return body !== null ? { status: 200, type: "text/plain", body } : { status: 404, type: "text/plain", body: `Artifact body not found: ${match[1]}` };
|
|
407091
|
+
}
|
|
407092
|
+
match = path22.match(/^\/(?:artifacts\/)?([^/]+)$/);
|
|
407093
|
+
if (match) {
|
|
407094
|
+
const artifact = getArtifact(cwd2, match[1]);
|
|
407095
|
+
if (artifact) {
|
|
407096
|
+
return { status: 200, type: "text/html", body: renderArtifactPage(artifact, readArtifactBody(cwd2, artifact.id)) };
|
|
407097
|
+
}
|
|
407098
|
+
return { status: 404, type: "text/html", body: notFound4(match[1]) };
|
|
407099
|
+
}
|
|
407100
|
+
return { status: 404, type: "text/html", body: notFound4(path22) };
|
|
407101
|
+
}
|
|
407102
|
+
async function handleArtifactsPost(cwd2, url3, exec6) {
|
|
407103
|
+
const path22 = new URL(url3, "http://localhost").pathname.replace(/\/+$/, "");
|
|
407104
|
+
if (path22 === "/api/capture-diff") {
|
|
407105
|
+
const artifact = await captureDiff2(cwd2, "Working tree diff", exec6);
|
|
407106
|
+
return artifact ? { status: 200, type: "application/json", body: JSON.stringify({ id: artifact.id }) } : { status: 200, type: "application/json", body: JSON.stringify({ error: "No working-tree changes to capture." }) };
|
|
407107
|
+
}
|
|
407108
|
+
return { status: 404, type: "application/json", body: JSON.stringify({ error: `Unknown endpoint: ${path22}` }) };
|
|
407109
|
+
}
|
|
407110
|
+
function activeArtifactsServer() {
|
|
407111
|
+
return active ? { port: active.port, url: `http://127.0.0.1:${active.port}` } : null;
|
|
407112
|
+
}
|
|
407113
|
+
function startArtifactsServer(cwd2, port = 4180, exec6) {
|
|
407114
|
+
if (active) {
|
|
407115
|
+
return Promise.resolve({ port: active.port, url: `http://127.0.0.1:${active.port}`, alreadyRunning: true });
|
|
407116
|
+
}
|
|
407117
|
+
return new Promise((resolvePromise, reject2) => {
|
|
407118
|
+
const server2 = createServer5((req, res) => {
|
|
407119
|
+
const respond = (r) => {
|
|
407120
|
+
res.writeHead(r.status, { "content-type": `${r.type}; charset=utf-8` });
|
|
407121
|
+
res.end(r.body);
|
|
407122
|
+
};
|
|
407123
|
+
const handler = req.method === "GET" ? handleArtifactsRequest(cwd2, req.url ?? "/", exec6) : req.method === "POST" ? handleArtifactsPost(cwd2, req.url ?? "/", exec6) : Promise.resolve({ status: 405, type: "text/plain", body: "Method not allowed" });
|
|
407124
|
+
handler.then(respond).catch((error40) => respond({ status: 500, type: "text/plain", body: String(error40) }));
|
|
407125
|
+
});
|
|
407126
|
+
server2.once("error", reject2);
|
|
407127
|
+
server2.listen(port, "127.0.0.1", () => {
|
|
407128
|
+
const address = server2.address();
|
|
407129
|
+
const boundPort = typeof address === "object" && address ? address.port : port;
|
|
407130
|
+
active = { server: server2, port: boundPort };
|
|
407131
|
+
resolvePromise({ port: boundPort, url: `http://127.0.0.1:${boundPort}`, alreadyRunning: false });
|
|
407132
|
+
});
|
|
407133
|
+
});
|
|
407134
|
+
}
|
|
407135
|
+
async function stopArtifactsServer() {
|
|
407136
|
+
if (!active)
|
|
407137
|
+
return false;
|
|
407138
|
+
const { server: server2 } = active;
|
|
407139
|
+
active = null;
|
|
407140
|
+
await new Promise((resolvePromise) => server2.close(() => resolvePromise()));
|
|
407141
|
+
return true;
|
|
407142
|
+
}
|
|
407143
|
+
var STATUS_COLOR, DIFF_VIEWER_HEAD = `
|
|
407144
|
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/github.min.css">
|
|
407145
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/diff2html/bundles/css/diff2html.min.css">
|
|
407146
|
+
<script src="https://cdn.jsdelivr.net/npm/diff2html/bundles/js/diff2html-ui.min.js"></script>`, active = null;
|
|
407147
|
+
var init_artifactsServer = __esm(() => {
|
|
407148
|
+
init_artifacts();
|
|
407149
|
+
STATUS_COLOR = {
|
|
407150
|
+
pending: "#b58900",
|
|
407151
|
+
approved: "#2aa15f",
|
|
407152
|
+
rejected: "#d94f4f"
|
|
407153
|
+
};
|
|
407154
|
+
});
|
|
407155
|
+
|
|
406939
407156
|
// src/commands/artifacts/artifacts.ts
|
|
406940
407157
|
var exports_artifacts = {};
|
|
406941
407158
|
__export(exports_artifacts, {
|
|
@@ -406946,7 +407163,7 @@ function option18(tokens, name) {
|
|
|
406946
407163
|
return index2 === -1 ? undefined : tokens[index2 + 1];
|
|
406947
407164
|
}
|
|
406948
407165
|
function positionals14(tokens) {
|
|
406949
|
-
const withValue = new Set(["--kind", "--title", "--body", "--file", "--summary", "--feedback", "--command", "--task"]);
|
|
407166
|
+
const withValue = new Set(["--kind", "--title", "--body", "--file", "--summary", "--feedback", "--command", "--task", "--port"]);
|
|
406950
407167
|
const values2 = [];
|
|
406951
407168
|
for (let i3 = 0;i3 < tokens.length; i3++) {
|
|
406952
407169
|
const token = tokens[i3];
|
|
@@ -406968,6 +407185,7 @@ function usage19() {
|
|
|
406968
407185
|
' ur artifacts add --kind plan --title "..." [--body "..."] [--file path] [--summary "..."]',
|
|
406969
407186
|
' ur artifacts capture-diff [--title "..."]',
|
|
406970
407187
|
' ur artifacts capture-tests --command "bun test"',
|
|
407188
|
+
" ur artifacts serve [--port 4180] | serve --stop",
|
|
406971
407189
|
" ur artifacts approve <id>",
|
|
406972
407190
|
' ur artifacts reject <id> --feedback "..."',
|
|
406973
407191
|
' ur artifacts feedback|comment <id> --feedback "..." [--task bg_id]',
|
|
@@ -407021,6 +407239,31 @@ var KINDS, call84 = async (args) => {
|
|
|
407021
407239
|
value: json2 ? JSON.stringify(artifact, null, 2) : `Captured test run as artifact ${artifact.id} (${artifact.summary}).`
|
|
407022
407240
|
};
|
|
407023
407241
|
}
|
|
407242
|
+
if (action3 === "serve") {
|
|
407243
|
+
if (tokens.includes("--stop")) {
|
|
407244
|
+
return {
|
|
407245
|
+
type: "text",
|
|
407246
|
+
value: await stopArtifactsServer() ? "Artifacts server stopped." : "Artifacts server is not running."
|
|
407247
|
+
};
|
|
407248
|
+
}
|
|
407249
|
+
const running = activeArtifactsServer();
|
|
407250
|
+
if (running) {
|
|
407251
|
+
return { type: "text", value: `Artifacts page already running at ${running.url} \u2014 open ${running.url}/artifacts/<id>.` };
|
|
407252
|
+
}
|
|
407253
|
+
const port = Number(option18(tokens, "--port") ?? 4180);
|
|
407254
|
+
if (!Number.isInteger(port) || port < 0 || port > 65535) {
|
|
407255
|
+
return { type: "text", value: `Invalid port: ${option18(tokens, "--port")}` };
|
|
407256
|
+
}
|
|
407257
|
+
try {
|
|
407258
|
+
const { url: url3 } = await startArtifactsServer(cwd2, port);
|
|
407259
|
+
return {
|
|
407260
|
+
type: "text",
|
|
407261
|
+
value: `Artifacts page: ${url3} \u2014 open ${url3}/artifacts/<id> for a single artifact, ${url3}/diff for live working-tree changes (VS Code-style diff). Stop with \`ur artifacts serve --stop\`.`
|
|
407262
|
+
};
|
|
407263
|
+
} catch (error40) {
|
|
407264
|
+
return { type: "text", value: `Failed to start artifacts server on port ${port}: ${error40}` };
|
|
407265
|
+
}
|
|
407266
|
+
}
|
|
407024
407267
|
if (!id)
|
|
407025
407268
|
return { type: "text", value: usage19() };
|
|
407026
407269
|
if (action3 === "show") {
|
|
@@ -407061,6 +407304,7 @@ var KINDS, call84 = async (args) => {
|
|
|
407061
407304
|
};
|
|
407062
407305
|
var init_artifacts2 = __esm(() => {
|
|
407063
407306
|
init_artifacts();
|
|
407307
|
+
init_artifactsServer();
|
|
407064
407308
|
init_backgroundRunner();
|
|
407065
407309
|
init_argumentSubstitution();
|
|
407066
407310
|
init_cwd2();
|
|
@@ -407074,8 +407318,8 @@ var init_artifacts3 = __esm(() => {
|
|
|
407074
407318
|
type: "local",
|
|
407075
407319
|
name: "artifacts",
|
|
407076
407320
|
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]",
|
|
407321
|
+
description: "Reviewable deliverables (plans, diffs, test runs, screenshots) under .ur/artifacts with approve/reject/feedback and a local web page (serve)",
|
|
407322
|
+
argumentHint: "list|show|serve|add|capture-diff|capture-tests|approve|reject|feedback|delete [id] [--kind ...] [--title ...] [--port ...] [--json]",
|
|
407079
407323
|
supportsNonInteractive: true,
|
|
407080
407324
|
load: () => Promise.resolve().then(() => (init_artifacts2(), exports_artifacts))
|
|
407081
407325
|
};
|
|
@@ -408940,7 +409184,7 @@ function optionValue7(tokens, flag) {
|
|
|
408940
409184
|
const index2 = tokens.indexOf(flag);
|
|
408941
409185
|
return index2 >= 0 ? tokens[index2 + 1] : undefined;
|
|
408942
409186
|
}
|
|
408943
|
-
function
|
|
409187
|
+
function notFound5(name) {
|
|
408944
409188
|
const available = listSuites(getCwd());
|
|
408945
409189
|
const hint = available.length > 0 ? `
|
|
408946
409190
|
Available: ${available.join(", ")}` : "";
|
|
@@ -409118,7 +409362,7 @@ Run it locally: ur eval run ${result.suite.name}`
|
|
|
409118
409362
|
const suite = loadSuite(cwd2, name);
|
|
409119
409363
|
if (command5 === "validate") {
|
|
409120
409364
|
if (!suite)
|
|
409121
|
-
return
|
|
409365
|
+
return notFound5(name);
|
|
409122
409366
|
const validation = validateEvalSuite(suite);
|
|
409123
409367
|
if (json2)
|
|
409124
409368
|
return { type: "text", value: JSON.stringify(validation, null, 2) };
|
|
@@ -409136,7 +409380,7 @@ Run it locally: ur eval run ${result.suite.name}`
|
|
|
409136
409380
|
}
|
|
409137
409381
|
if (command5 === "run") {
|
|
409138
409382
|
if (!suite)
|
|
409139
|
-
return
|
|
409383
|
+
return notFound5(name);
|
|
409140
409384
|
const validation = validateEvalSuite(suite);
|
|
409141
409385
|
if (!validation.valid) {
|
|
409142
409386
|
return { type: "text", value: formatSuiteValidation(suite, validation) };
|
|
@@ -410832,7 +411076,7 @@ var init_code_index2 = __esm(() => {
|
|
|
410832
411076
|
|
|
410833
411077
|
// node_modules/typescript/lib/typescript.js
|
|
410834
411078
|
var require_typescript2 = __commonJS((exports, module) => {
|
|
410835
|
-
var __dirname = "/sessions/friendly-inspiring-goldberg/mnt/UR-1.
|
|
411079
|
+
var __dirname = "/sessions/friendly-inspiring-goldberg/mnt/UR-1.43.0/node_modules/typescript/lib", __filename = "/sessions/friendly-inspiring-goldberg/mnt/UR-1.43.0/node_modules/typescript/lib/typescript.js";
|
|
410836
411080
|
/*! *****************************************************************************
|
|
410837
411081
|
Copyright (c) Microsoft Corporation. All rights reserved.
|
|
410838
411082
|
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
|
@@ -590140,8 +590384,8 @@ function resolveAgentOverrides(allAgents, activeAgents) {
|
|
|
590140
590384
|
if (seen.has(key))
|
|
590141
590385
|
continue;
|
|
590142
590386
|
seen.add(key);
|
|
590143
|
-
const
|
|
590144
|
-
const overriddenBy =
|
|
590387
|
+
const active2 = activeMap.get(agent.agentType);
|
|
590388
|
+
const overriddenBy = active2 && active2.source !== agent.source ? active2.source : undefined;
|
|
590145
590389
|
resolved.push({ ...agent, overriddenBy });
|
|
590146
590390
|
}
|
|
590147
590391
|
return resolved;
|
|
@@ -596366,7 +596610,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
|
|
|
596366
596610
|
smapsRollup,
|
|
596367
596611
|
platform: process.platform,
|
|
596368
596612
|
nodeVersion: process.version,
|
|
596369
|
-
ccVersion: "1.
|
|
596613
|
+
ccVersion: "1.43.1"
|
|
596370
596614
|
};
|
|
596371
596615
|
}
|
|
596372
596616
|
async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
|
|
@@ -596952,7 +597196,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
596952
597196
|
var call137 = async () => {
|
|
596953
597197
|
return {
|
|
596954
597198
|
type: "text",
|
|
596955
|
-
value: "1.
|
|
597199
|
+
value: "1.43.1"
|
|
596956
597200
|
};
|
|
596957
597201
|
}, version2, version_default;
|
|
596958
597202
|
var init_version = __esm(() => {
|
|
@@ -607045,7 +607289,7 @@ function generateHtmlReport(data, insights) {
|
|
|
607045
607289
|
</html>`;
|
|
607046
607290
|
}
|
|
607047
607291
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
607048
|
-
const version3 = typeof MACRO !== "undefined" ? "1.
|
|
607292
|
+
const version3 = typeof MACRO !== "undefined" ? "1.43.1" : "unknown";
|
|
607049
607293
|
const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
|
|
607050
607294
|
const facets_summary = {
|
|
607051
607295
|
total: facets.size,
|
|
@@ -611325,7 +611569,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
611325
611569
|
init_settings2();
|
|
611326
611570
|
init_slowOperations();
|
|
611327
611571
|
init_uuid();
|
|
611328
|
-
VERSION5 = typeof MACRO !== "undefined" ? "1.
|
|
611572
|
+
VERSION5 = typeof MACRO !== "undefined" ? "1.43.1" : "unknown";
|
|
611329
611573
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
611330
611574
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
611331
611575
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -612530,7 +612774,7 @@ var init_filesystem = __esm(() => {
|
|
|
612530
612774
|
});
|
|
612531
612775
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
612532
612776
|
const nonce = randomBytes18(16).toString("hex");
|
|
612533
|
-
return join202(getURTempDir(), "bundled-skills", "1.
|
|
612777
|
+
return join202(getURTempDir(), "bundled-skills", "1.43.1", nonce);
|
|
612534
612778
|
});
|
|
612535
612779
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
612536
612780
|
});
|
|
@@ -618819,7 +619063,7 @@ function computeFingerprint(messageText2, version3) {
|
|
|
618819
619063
|
}
|
|
618820
619064
|
function computeFingerprintFromMessages(messages) {
|
|
618821
619065
|
const firstMessageText = extractFirstMessageText(messages);
|
|
618822
|
-
return computeFingerprint(firstMessageText, "1.
|
|
619066
|
+
return computeFingerprint(firstMessageText, "1.43.1");
|
|
618823
619067
|
}
|
|
618824
619068
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
618825
619069
|
var init_fingerprint = () => {};
|
|
@@ -620693,7 +620937,7 @@ async function sideQuery(opts) {
|
|
|
620693
620937
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
620694
620938
|
}
|
|
620695
620939
|
const messageText2 = extractFirstUserMessageText(messages);
|
|
620696
|
-
const fingerprint2 = computeFingerprint(messageText2, "1.
|
|
620940
|
+
const fingerprint2 = computeFingerprint(messageText2, "1.43.1");
|
|
620697
620941
|
const attributionHeader = getAttributionHeader(fingerprint2);
|
|
620698
620942
|
const systemBlocks = [
|
|
620699
620943
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -620977,7 +621221,7 @@ import {
|
|
|
620977
621221
|
stat as stat45,
|
|
620978
621222
|
unlink as unlink24
|
|
620979
621223
|
} from "fs/promises";
|
|
620980
|
-
import { createServer as
|
|
621224
|
+
import { createServer as createServer6 } from "net";
|
|
620981
621225
|
import { homedir as homedir33, platform as platform6 } from "os";
|
|
620982
621226
|
import { join as join205 } from "path";
|
|
620983
621227
|
function log(message, ...args) {
|
|
@@ -621053,7 +621297,7 @@ class ChromeNativeHost {
|
|
|
621053
621297
|
} catch {}
|
|
621054
621298
|
}
|
|
621055
621299
|
log(`Creating socket listener: ${this.socketPath}`);
|
|
621056
|
-
this.server =
|
|
621300
|
+
this.server = createServer6((socket) => this.handleMcpClient(socket));
|
|
621057
621301
|
await new Promise((resolve50, reject2) => {
|
|
621058
621302
|
this.server.listen(this.socketPath, () => {
|
|
621059
621303
|
log("Socket server listening for connections");
|
|
@@ -623541,7 +623785,7 @@ var init_managedEnv = __esm(() => {
|
|
|
623541
623785
|
});
|
|
623542
623786
|
|
|
623543
623787
|
// src/upstreamproxy/relay.ts
|
|
623544
|
-
import { createServer as
|
|
623788
|
+
import { createServer as createServer7 } from "net";
|
|
623545
623789
|
function encodeChunk(data) {
|
|
623546
623790
|
const len = data.length;
|
|
623547
623791
|
const varint = [];
|
|
@@ -623649,7 +623893,7 @@ function startBunRelay(wsUrl, authHeader, wsAuthHeader) {
|
|
|
623649
623893
|
async function startNodeRelay(wsUrl, authHeader, wsAuthHeader) {
|
|
623650
623894
|
nodeWSCtor = (await import("ws")).default;
|
|
623651
623895
|
const states = new WeakMap;
|
|
623652
|
-
const server2 =
|
|
623896
|
+
const server2 = createServer7((sock) => {
|
|
623653
623897
|
const st = newConnState();
|
|
623654
623898
|
states.set(sock, st);
|
|
623655
623899
|
const adapter2 = {
|
|
@@ -625430,7 +625674,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
625430
625674
|
slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
|
|
625431
625675
|
apiKeySource: getURHQApiKeyWithSource().source,
|
|
625432
625676
|
betas: getSdkBetas(),
|
|
625433
|
-
ur_version: "1.
|
|
625677
|
+
ur_version: "1.43.1",
|
|
625434
625678
|
output_style: outputStyle2,
|
|
625435
625679
|
agents: inputs.agents.map((agent) => agent.agentType),
|
|
625436
625680
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
|
|
@@ -640058,7 +640302,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
640058
640302
|
function getSemverPart(version3) {
|
|
640059
640303
|
return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
|
|
640060
640304
|
}
|
|
640061
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.
|
|
640305
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.43.1") {
|
|
640062
640306
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react226.useState(() => getSemverPart(initialVersion));
|
|
640063
640307
|
if (!updatedVersion) {
|
|
640064
640308
|
return null;
|
|
@@ -640107,7 +640351,7 @@ function AutoUpdater({
|
|
|
640107
640351
|
return;
|
|
640108
640352
|
}
|
|
640109
640353
|
if (false) {}
|
|
640110
|
-
const currentVersion = "1.
|
|
640354
|
+
const currentVersion = "1.43.1";
|
|
640111
640355
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
640112
640356
|
let latestVersion = await getLatestVersion(channel);
|
|
640113
640357
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -640336,12 +640580,12 @@ function NativeAutoUpdater({
|
|
|
640336
640580
|
logEvent("tengu_native_auto_updater_start", {});
|
|
640337
640581
|
try {
|
|
640338
640582
|
const maxVersion = await getMaxVersion();
|
|
640339
|
-
if (maxVersion && gt("1.
|
|
640583
|
+
if (maxVersion && gt("1.43.1", maxVersion)) {
|
|
640340
640584
|
const msg = await getMaxVersionMessage();
|
|
640341
640585
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
640342
640586
|
}
|
|
640343
640587
|
const result = await installLatest(channel);
|
|
640344
|
-
const currentVersion = "1.
|
|
640588
|
+
const currentVersion = "1.43.1";
|
|
640345
640589
|
const latencyMs = Date.now() - startTime;
|
|
640346
640590
|
if (result.lockFailed) {
|
|
640347
640591
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -640478,17 +640722,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
640478
640722
|
const maxVersion = await getMaxVersion();
|
|
640479
640723
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
640480
640724
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
640481
|
-
if (gte("1.
|
|
640482
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.
|
|
640725
|
+
if (gte("1.43.1", maxVersion)) {
|
|
640726
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.43.1"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
640483
640727
|
setUpdateAvailable(false);
|
|
640484
640728
|
return;
|
|
640485
640729
|
}
|
|
640486
640730
|
latest = maxVersion;
|
|
640487
640731
|
}
|
|
640488
|
-
const hasUpdate = latest && !gte("1.
|
|
640732
|
+
const hasUpdate = latest && !gte("1.43.1", latest) && !shouldSkipVersion(latest);
|
|
640489
640733
|
setUpdateAvailable(!!hasUpdate);
|
|
640490
640734
|
if (hasUpdate) {
|
|
640491
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.
|
|
640735
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.43.1"} -> ${latest}`);
|
|
640492
640736
|
}
|
|
640493
640737
|
};
|
|
640494
640738
|
$3[0] = t1;
|
|
@@ -640522,7 +640766,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
640522
640766
|
wrap: "truncate",
|
|
640523
640767
|
children: [
|
|
640524
640768
|
"currentVersion: ",
|
|
640525
|
-
"1.
|
|
640769
|
+
"1.43.1"
|
|
640526
640770
|
]
|
|
640527
640771
|
}, undefined, true, undefined, this);
|
|
640528
640772
|
$3[3] = verbose;
|
|
@@ -652974,7 +653218,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
652974
653218
|
project_dir: getOriginalCwd(),
|
|
652975
653219
|
added_dirs: addedDirs
|
|
652976
653220
|
},
|
|
652977
|
-
version: "1.
|
|
653221
|
+
version: "1.43.1",
|
|
652978
653222
|
output_style: {
|
|
652979
653223
|
name: outputStyleName
|
|
652980
653224
|
},
|
|
@@ -653057,7 +653301,7 @@ function StatusLineInner({
|
|
|
653057
653301
|
const taskValues = Object.values(tasks2);
|
|
653058
653302
|
const taskRunningCount = taskValues.filter((task2) => task2.status === "running" || task2.status === "pending").length;
|
|
653059
653303
|
const defaultStatusLineText = buildDefaultStatusBar({
|
|
653060
|
-
version: "1.
|
|
653304
|
+
version: "1.43.1",
|
|
653061
653305
|
providerLabel: providerRuntime.providerLabel,
|
|
653062
653306
|
authMode: providerRuntime.authLabel,
|
|
653063
653307
|
model: providerRuntime.model ?? renderModelName(mainLoopModel),
|
|
@@ -655371,9 +655615,9 @@ function useSwarmBanner() {
|
|
|
655371
655615
|
};
|
|
655372
655616
|
}
|
|
655373
655617
|
}
|
|
655374
|
-
const
|
|
655375
|
-
if (
|
|
655376
|
-
const task2 =
|
|
655618
|
+
const active2 = getActiveAgentForInput(state2);
|
|
655619
|
+
if (active2.type === "named_agent") {
|
|
655620
|
+
const task2 = active2.task;
|
|
655377
655621
|
let name;
|
|
655378
655622
|
for (const [n3, id] of state2.agentNameRegistry) {
|
|
655379
655623
|
if (id === task2.id) {
|
|
@@ -664545,7 +664789,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
|
|
|
664545
664789
|
} catch {}
|
|
664546
664790
|
const data = {
|
|
664547
664791
|
trigger: trigger2,
|
|
664548
|
-
version: "1.
|
|
664792
|
+
version: "1.43.1",
|
|
664549
664793
|
platform: process.platform,
|
|
664550
664794
|
transcript,
|
|
664551
664795
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -671770,8 +672014,8 @@ function applyModalPagerAction(s, act, onBeforeJump) {
|
|
|
671770
672014
|
}
|
|
671771
672015
|
case "fullPageUp":
|
|
671772
672016
|
case "fullPageDown": {
|
|
671773
|
-
const
|
|
671774
|
-
const d = act === "fullPageDown" ?
|
|
672017
|
+
const page2 = Math.max(1, s.getViewportHeight());
|
|
672018
|
+
const d = act === "fullPageDown" ? page2 : -page2;
|
|
671775
672019
|
onBeforeJump(d);
|
|
671776
672020
|
return jumpBy(s, d);
|
|
671777
672021
|
}
|
|
@@ -676430,7 +676674,7 @@ function WelcomeV2() {
|
|
|
676430
676674
|
dimColor: true,
|
|
676431
676675
|
children: [
|
|
676432
676676
|
"v",
|
|
676433
|
-
"1.
|
|
676677
|
+
"1.43.1"
|
|
676434
676678
|
]
|
|
676435
676679
|
}, undefined, true, undefined, this)
|
|
676436
676680
|
]
|
|
@@ -677690,7 +677934,7 @@ function completeOnboarding() {
|
|
|
677690
677934
|
saveGlobalConfig((current) => ({
|
|
677691
677935
|
...current,
|
|
677692
677936
|
hasCompletedOnboarding: true,
|
|
677693
|
-
lastOnboardingVersion: "1.
|
|
677937
|
+
lastOnboardingVersion: "1.43.1"
|
|
677694
677938
|
}));
|
|
677695
677939
|
}
|
|
677696
677940
|
function showDialog(root2, renderer) {
|
|
@@ -682727,7 +682971,7 @@ function appendToLog(path24, message) {
|
|
|
682727
682971
|
cwd: getFsImplementation().cwd(),
|
|
682728
682972
|
userType: process.env.USER_TYPE,
|
|
682729
682973
|
sessionId: getSessionId(),
|
|
682730
|
-
version: "1.
|
|
682974
|
+
version: "1.43.1"
|
|
682731
682975
|
};
|
|
682732
682976
|
getLogWriter(path24).write(messageWithTimestamp);
|
|
682733
682977
|
}
|
|
@@ -684225,11 +684469,11 @@ class CCRClient {
|
|
|
684225
684469
|
if (cursor) {
|
|
684226
684470
|
url3.searchParams.set("cursor", cursor);
|
|
684227
684471
|
}
|
|
684228
|
-
const
|
|
684229
|
-
if (!
|
|
684472
|
+
const page2 = await this.getWithRetry(url3.toString(), authHeaders, context4);
|
|
684473
|
+
if (!page2)
|
|
684230
684474
|
return null;
|
|
684231
|
-
allEvents.push(...
|
|
684232
|
-
cursor =
|
|
684475
|
+
allEvents.push(...page2.data ?? []);
|
|
684476
|
+
cursor = page2.next_cursor;
|
|
684233
684477
|
} while (cursor);
|
|
684234
684478
|
logForDebugging(`CCRClient: Read ${allEvents.length} internal events from ${path24}${params.subagents ? " (subagents)" : ""}`);
|
|
684235
684479
|
return allEvents;
|
|
@@ -686821,8 +687065,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
686821
687065
|
}
|
|
686822
687066
|
async function checkEnvLessBridgeMinVersion() {
|
|
686823
687067
|
const cfg = await getEnvLessBridgeConfig();
|
|
686824
|
-
if (cfg.min_version && lt("1.
|
|
686825
|
-
return `Your version of UR (${"1.
|
|
687068
|
+
if (cfg.min_version && lt("1.43.1", cfg.min_version)) {
|
|
687069
|
+
return `Your version of UR (${"1.43.1"}) is too old for Remote Control.
|
|
686826
687070
|
Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
|
|
686827
687071
|
}
|
|
686828
687072
|
return null;
|
|
@@ -687296,7 +687540,7 @@ async function initBridgeCore(params) {
|
|
|
687296
687540
|
const rawApi = createBridgeApiClient({
|
|
687297
687541
|
baseUrl,
|
|
687298
687542
|
getAccessToken,
|
|
687299
|
-
runnerVersion: "1.
|
|
687543
|
+
runnerVersion: "1.43.1",
|
|
687300
687544
|
onDebug: logForDebugging,
|
|
687301
687545
|
onAuth401,
|
|
687302
687546
|
getTrustedDeviceToken
|
|
@@ -692978,7 +693222,7 @@ async function startMCPServer(cwd3, debug2, verbose) {
|
|
|
692978
693222
|
setCwd(cwd3);
|
|
692979
693223
|
const server2 = new Server({
|
|
692980
693224
|
name: "ur/tengu",
|
|
692981
|
-
version: "1.
|
|
693225
|
+
version: "1.43.1"
|
|
692982
693226
|
}, {
|
|
692983
693227
|
capabilities: {
|
|
692984
693228
|
tools: {}
|
|
@@ -693542,8 +693786,8 @@ async function providerListHandler(options2 = {}) {
|
|
|
693542
693786
|
}
|
|
693543
693787
|
async function providerStatusHandler(options2 = {}) {
|
|
693544
693788
|
const settings = getInitialSettings();
|
|
693545
|
-
const
|
|
693546
|
-
const result = await doctorProvider(
|
|
693789
|
+
const active2 = getActiveProviderSettings(settings).active ?? "ollama";
|
|
693790
|
+
const result = await doctorProvider(active2, { settings });
|
|
693547
693791
|
writeOutput(formatProviderStatus(result, Boolean(options2.json)));
|
|
693548
693792
|
process.exit(result.ok ? 0 : 1);
|
|
693549
693793
|
}
|
|
@@ -693558,15 +693802,15 @@ async function providerDoctorHandler(providerArg, options2 = {}) {
|
|
|
693558
693802
|
provider = resolved;
|
|
693559
693803
|
}
|
|
693560
693804
|
const settings = getInitialSettings();
|
|
693561
|
-
const
|
|
693562
|
-
const result = await doctorProvider(provider ??
|
|
693805
|
+
const active2 = getActiveProviderSettings(settings).active ?? "ollama";
|
|
693806
|
+
const result = await doctorProvider(provider ?? active2, { settings });
|
|
693563
693807
|
writeOutput(formatProviderDoctor(result, Boolean(options2.json)));
|
|
693564
693808
|
process.exit(result.ok ? 0 : 1);
|
|
693565
693809
|
}
|
|
693566
693810
|
async function providerModelsHandler(providerArg, options2 = {}) {
|
|
693567
693811
|
const settings = getInitialSettings();
|
|
693568
|
-
const
|
|
693569
|
-
const provider = providerArg ? resolveProviderId(providerArg) :
|
|
693812
|
+
const active2 = getActiveProviderSettings(settings).active ?? "ollama";
|
|
693813
|
+
const provider = providerArg ? resolveProviderId(providerArg) : active2;
|
|
693570
693814
|
if (!provider) {
|
|
693571
693815
|
writeError(`Unknown provider "${providerArg}". Run: ur provider list`);
|
|
693572
693816
|
process.exit(1);
|
|
@@ -695020,7 +695264,7 @@ async function update() {
|
|
|
695020
695264
|
logEvent("tengu_update_check", {});
|
|
695021
695265
|
const diagnostic = await getDoctorDiagnostic();
|
|
695022
695266
|
const result = await checkUpgradeStatus({
|
|
695023
|
-
currentVersion: "1.
|
|
695267
|
+
currentVersion: "1.43.1",
|
|
695024
695268
|
packageName: UR_AGENT_PACKAGE_NAME,
|
|
695025
695269
|
installationType: diagnostic.installationType,
|
|
695026
695270
|
latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
|
|
@@ -696266,7 +696510,7 @@ ${customInstructions}` : customInstructions;
|
|
|
696266
696510
|
}
|
|
696267
696511
|
}
|
|
696268
696512
|
logForDiagnosticsNoPII("info", "started", {
|
|
696269
|
-
version: "1.
|
|
696513
|
+
version: "1.43.1",
|
|
696270
696514
|
is_native_binary: isInBundledMode()
|
|
696271
696515
|
});
|
|
696272
696516
|
registerCleanup(async () => {
|
|
@@ -697052,7 +697296,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
697052
697296
|
pendingHookMessages
|
|
697053
697297
|
}, renderAndRun);
|
|
697054
697298
|
}
|
|
697055
|
-
}).version("1.
|
|
697299
|
+
}).version("1.43.1 (UR-Nexus)", "-v, --version", "Output the version number");
|
|
697056
697300
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
697057
697301
|
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
697302
|
if (canUserConfigureAdvisor()) {
|
|
@@ -697967,7 +698211,7 @@ if (false) {}
|
|
|
697967
698211
|
async function main2() {
|
|
697968
698212
|
const args = process.argv.slice(2);
|
|
697969
698213
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
697970
|
-
console.log(`${"1.
|
|
698214
|
+
console.log(`${"1.43.1"} (UR-Nexus)`);
|
|
697971
698215
|
return;
|
|
697972
698216
|
}
|
|
697973
698217
|
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.1</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.1",
|
|
6
6
|
"publisher": "ur-nexus",
|
|
7
7
|
"engines": {
|
|
8
8
|
"vscode": "^1.92.0"
|
package/package.json
CHANGED