ur-agent 1.25.0 → 1.25.3
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 +23 -0
- package/README.md +29 -2
- package/RELEASE.md +8 -0
- package/dist/cli.js +533 -346
- package/docs/AGENT_FEATURES.md +25 -1
- package/docs/CODE_FEATURE_INVENTORY.md +1 -1
- package/docs/CONFIGURATION.md +17 -1
- package/docs/USAGE.md +30 -1
- package/docs/VALIDATION.md +1 -1
- package/docs/providers.md +25 -2
- package/documentation/README.md +4 -0
- package/documentation/app.js +50 -5
- package/documentation/index.html +56 -5
- package/extensions/vscode-ur-inline-diffs/README.md +4 -0
- package/extensions/vscode-ur-inline-diffs/package.json +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -66884,7 +66884,7 @@ var init_auth = __esm(() => {
|
|
|
66884
66884
|
|
|
66885
66885
|
// src/utils/userAgent.ts
|
|
66886
66886
|
function getURCodeUserAgent() {
|
|
66887
|
-
return `ur/${"1.25.
|
|
66887
|
+
return `ur/${"1.25.3"}`;
|
|
66888
66888
|
}
|
|
66889
66889
|
|
|
66890
66890
|
// src/utils/workloadContext.ts
|
|
@@ -66906,7 +66906,7 @@ function getUserAgent() {
|
|
|
66906
66906
|
const clientApp = process.env.UR_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}` : "";
|
|
66907
66907
|
const workload = getWorkload();
|
|
66908
66908
|
const workloadSuffix = workload ? `, workload/${workload}` : "";
|
|
66909
|
-
return `ur-cli/${"1.25.
|
|
66909
|
+
return `ur-cli/${"1.25.3"} (${process.env.USER_TYPE}, ${process.env.UR_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
|
|
66910
66910
|
}
|
|
66911
66911
|
function getMCPUserAgent() {
|
|
66912
66912
|
const parts = [];
|
|
@@ -66920,7 +66920,7 @@ function getMCPUserAgent() {
|
|
|
66920
66920
|
parts.push(`client-app/${process.env.UR_AGENT_SDK_CLIENT_APP}`);
|
|
66921
66921
|
}
|
|
66922
66922
|
const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
|
|
66923
|
-
return `ur/${"1.25.
|
|
66923
|
+
return `ur/${"1.25.3"}${suffix}`;
|
|
66924
66924
|
}
|
|
66925
66925
|
function getWebFetchUserAgent() {
|
|
66926
66926
|
return `UR-User (${getURCodeUserAgent()})`;
|
|
@@ -67058,7 +67058,7 @@ var init_user = __esm(() => {
|
|
|
67058
67058
|
deviceId,
|
|
67059
67059
|
sessionId: getSessionId(),
|
|
67060
67060
|
email: getEmail(),
|
|
67061
|
-
appVersion: "1.25.
|
|
67061
|
+
appVersion: "1.25.3",
|
|
67062
67062
|
platform: getHostPlatformForAnalytics(),
|
|
67063
67063
|
organizationUuid,
|
|
67064
67064
|
accountUuid,
|
|
@@ -73575,7 +73575,7 @@ var init_metadata = __esm(() => {
|
|
|
73575
73575
|
COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
|
|
73576
73576
|
WHITESPACE_REGEX = /\s+/;
|
|
73577
73577
|
getVersionBase = memoize_default(() => {
|
|
73578
|
-
const match = "1.25.
|
|
73578
|
+
const match = "1.25.3".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
|
|
73579
73579
|
return match ? match[0] : undefined;
|
|
73580
73580
|
});
|
|
73581
73581
|
buildEnvContext = memoize_default(async () => {
|
|
@@ -73615,7 +73615,7 @@ var init_metadata = __esm(() => {
|
|
|
73615
73615
|
isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
|
|
73616
73616
|
isURCodeAction: isEnvTruthy(process.env.UR_CODE_ACTION),
|
|
73617
73617
|
isURAiAuth: isURAISubscriber2(),
|
|
73618
|
-
version: "1.25.
|
|
73618
|
+
version: "1.25.3",
|
|
73619
73619
|
versionBase: getVersionBase(),
|
|
73620
73620
|
buildTime: "",
|
|
73621
73621
|
deploymentEnvironment: env2.detectDeploymentEnvironment(),
|
|
@@ -74285,7 +74285,7 @@ function initialize1PEventLogging() {
|
|
|
74285
74285
|
const platform2 = getPlatform();
|
|
74286
74286
|
const attributes = {
|
|
74287
74287
|
[import_semantic_conventions4.ATTR_SERVICE_NAME]: "ur",
|
|
74288
|
-
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.25.
|
|
74288
|
+
[import_semantic_conventions4.ATTR_SERVICE_VERSION]: "1.25.3"
|
|
74289
74289
|
};
|
|
74290
74290
|
if (platform2 === "wsl") {
|
|
74291
74291
|
const wslVersion = getWslVersion();
|
|
@@ -74312,7 +74312,7 @@ function initialize1PEventLogging() {
|
|
|
74312
74312
|
})
|
|
74313
74313
|
]
|
|
74314
74314
|
});
|
|
74315
|
-
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.25.
|
|
74315
|
+
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.urhq.ur.events", "1.25.3");
|
|
74316
74316
|
}
|
|
74317
74317
|
async function reinitialize1PEventLoggingIfConfigChanged() {
|
|
74318
74318
|
if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
|
|
@@ -79578,7 +79578,7 @@ function formatAgentTrendReport(report = buildAgentTrendReport()) {
|
|
|
79578
79578
|
function formatA2AAgentCard(options = {}, pretty = true) {
|
|
79579
79579
|
return JSON.stringify(buildA2AAgentCard(options), null, pretty ? 2 : 0);
|
|
79580
79580
|
}
|
|
79581
|
-
var urVersion = "1.25.
|
|
79581
|
+
var urVersion = "1.25.3", coverage, priorityRoadmap;
|
|
79582
79582
|
var init_trends = __esm(() => {
|
|
79583
79583
|
coverage = [
|
|
79584
79584
|
{
|
|
@@ -81570,7 +81570,7 @@ function getAttributionHeader(fingerprint) {
|
|
|
81570
81570
|
if (!isAttributionHeaderEnabled()) {
|
|
81571
81571
|
return "";
|
|
81572
81572
|
}
|
|
81573
|
-
const version2 = `${"1.25.
|
|
81573
|
+
const version2 = `${"1.25.3"}.${fingerprint}`;
|
|
81574
81574
|
const entrypoint = process.env.UR_CODE_ENTRYPOINT ?? "unknown";
|
|
81575
81575
|
const cch = "";
|
|
81576
81576
|
const workload = getWorkload();
|
|
@@ -128897,7 +128897,7 @@ How to use the statusLine command:
|
|
|
128897
128897
|
"project_dir": "string", // Project root directory path
|
|
128898
128898
|
"added_dirs": ["string"] // Directories added via /add-dir
|
|
128899
128899
|
},
|
|
128900
|
-
"version": "string", // UR-AGENT app version (e.g., "1.25.
|
|
128900
|
+
"version": "string", // UR-AGENT app version (e.g., "1.25.3")
|
|
128901
128901
|
"output_style": {
|
|
128902
128902
|
"name": "string", // Output style name (e.g., "default", "Explanatory", "Learning")
|
|
128903
128903
|
},
|
|
@@ -189239,7 +189239,7 @@ function getTelemetryAttributes() {
|
|
|
189239
189239
|
attributes["session.id"] = sessionId;
|
|
189240
189240
|
}
|
|
189241
189241
|
if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
|
|
189242
|
-
attributes["app.version"] = "1.25.
|
|
189242
|
+
attributes["app.version"] = "1.25.3";
|
|
189243
189243
|
}
|
|
189244
189244
|
const oauthAccount = getOauthAccountInfo();
|
|
189245
189245
|
if (oauthAccount) {
|
|
@@ -224233,9 +224233,10 @@ var init_IdeOnboardingDialog = __esm(() => {
|
|
|
224233
224233
|
});
|
|
224234
224234
|
|
|
224235
224235
|
// src/utils/ide.ts
|
|
224236
|
+
import { writeFileSync as writeFileSync10 } from "fs";
|
|
224236
224237
|
import { createConnection } from "net";
|
|
224237
224238
|
import * as os3 from "os";
|
|
224238
|
-
import { basename as basename12, join as join64, sep as pathSeparator, resolve as resolve19 } from "path";
|
|
224239
|
+
import { basename as basename12, dirname as dirname29, join as join64, sep as pathSeparator, resolve as resolve19 } from "path";
|
|
224239
224240
|
function isProcessRunning2(pid) {
|
|
224240
224241
|
try {
|
|
224241
224242
|
process.kill(pid, 0);
|
|
@@ -224622,12 +224623,7 @@ async function installIDEExtension(ideType) {
|
|
|
224622
224623
|
let version2 = await getInstalledVSCodeExtensionVersion(command);
|
|
224623
224624
|
if (!version2 || lt(version2, getURCodeVersion())) {
|
|
224624
224625
|
await sleep(500);
|
|
224625
|
-
|
|
224626
|
-
env: getInstallationEnv()
|
|
224627
|
-
});
|
|
224628
|
-
if (result.code !== 0) {
|
|
224629
|
-
throw new Error(`${result.code}: ${result.error} ${result.stderr}`);
|
|
224630
|
-
}
|
|
224626
|
+
await installBundledVSCodeExtension(command);
|
|
224631
224627
|
version2 = getURCodeVersion();
|
|
224632
224628
|
}
|
|
224633
224629
|
return version2;
|
|
@@ -224645,7 +224641,7 @@ function getInstallationEnv() {
|
|
|
224645
224641
|
return;
|
|
224646
224642
|
}
|
|
224647
224643
|
function getURCodeVersion() {
|
|
224648
|
-
return "1.25.
|
|
224644
|
+
return "1.25.3";
|
|
224649
224645
|
}
|
|
224650
224646
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
224651
224647
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -224655,12 +224651,122 @@ async function getInstalledVSCodeExtensionVersion(command) {
|
|
|
224655
224651
|
`) || [];
|
|
224656
224652
|
for (const line of lines) {
|
|
224657
224653
|
const [extensionId, version2] = line.split("@");
|
|
224658
|
-
if (extensionId ===
|
|
224654
|
+
if (extensionId === EXTENSION_ID && version2) {
|
|
224659
224655
|
return version2;
|
|
224660
224656
|
}
|
|
224661
224657
|
}
|
|
224662
224658
|
return null;
|
|
224663
224659
|
}
|
|
224660
|
+
function findBundledVSCodeExtensionDir(invokedPath = process.argv[1] ?? "") {
|
|
224661
|
+
const fs3 = getFsImplementation();
|
|
224662
|
+
const starts = [
|
|
224663
|
+
invokedPath ? dirname29(resolve19(invokedPath)) : null,
|
|
224664
|
+
process.cwd()
|
|
224665
|
+
].filter((value) => Boolean(value));
|
|
224666
|
+
for (const start of starts) {
|
|
224667
|
+
let current = start;
|
|
224668
|
+
for (let depth = 0;depth < 12; depth++) {
|
|
224669
|
+
const candidate = join64(current, BUNDLED_EXTENSION_RELATIVE_PATH);
|
|
224670
|
+
if (fs3.existsSync(join64(candidate, "package.json"))) {
|
|
224671
|
+
return candidate;
|
|
224672
|
+
}
|
|
224673
|
+
const parent = dirname29(current);
|
|
224674
|
+
if (parent === current)
|
|
224675
|
+
break;
|
|
224676
|
+
current = parent;
|
|
224677
|
+
}
|
|
224678
|
+
}
|
|
224679
|
+
return null;
|
|
224680
|
+
}
|
|
224681
|
+
function escapeXml2(value) {
|
|
224682
|
+
return value.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
|
|
224683
|
+
}
|
|
224684
|
+
function buildContentTypesXml() {
|
|
224685
|
+
return `<?xml version="1.0" encoding="utf-8"?>
|
|
224686
|
+
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
|
|
224687
|
+
<Default Extension="json" ContentType="application/json"/>
|
|
224688
|
+
<Default Extension="js" ContentType="application/javascript"/>
|
|
224689
|
+
<Default Extension="svg" ContentType="image/svg+xml"/>
|
|
224690
|
+
<Default Extension="vsixmanifest" ContentType="text/xml"/>
|
|
224691
|
+
</Types>
|
|
224692
|
+
`;
|
|
224693
|
+
}
|
|
224694
|
+
function buildVsixManifest(manifest) {
|
|
224695
|
+
const categories = manifest.categories?.join(",") || "Other";
|
|
224696
|
+
const engine = manifest.engines?.vscode || "^1.92.0";
|
|
224697
|
+
return `<?xml version="1.0" encoding="utf-8"?>
|
|
224698
|
+
<PackageManifest Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2011">
|
|
224699
|
+
<Metadata>
|
|
224700
|
+
<Identity Language="en-US" Id="${escapeXml2(manifest.name)}" Version="${escapeXml2(manifest.version)}" Publisher="${escapeXml2(manifest.publisher)}"/>
|
|
224701
|
+
<DisplayName>${escapeXml2(manifest.displayName ?? manifest.name)}</DisplayName>
|
|
224702
|
+
<Description xml:space="preserve">${escapeXml2(manifest.description ?? manifest.name)}</Description>
|
|
224703
|
+
<Categories>${escapeXml2(categories)}</Categories>
|
|
224704
|
+
<Properties>
|
|
224705
|
+
<Property Id="Microsoft.VisualStudio.Code.Engine" Value="${escapeXml2(engine)}"/>
|
|
224706
|
+
</Properties>
|
|
224707
|
+
</Metadata>
|
|
224708
|
+
<Installation>
|
|
224709
|
+
<InstallationTarget Id="Microsoft.VisualStudio.Code"/>
|
|
224710
|
+
</Installation>
|
|
224711
|
+
<Dependencies/>
|
|
224712
|
+
<Assets>
|
|
224713
|
+
<Asset Type="Microsoft.VisualStudio.Code.Manifest" Path="extension/package.json" Addressable="true"/>
|
|
224714
|
+
</Assets>
|
|
224715
|
+
</PackageManifest>
|
|
224716
|
+
`;
|
|
224717
|
+
}
|
|
224718
|
+
function collectExtensionFiles(dir, prefix = "") {
|
|
224719
|
+
const fs3 = getFsImplementation();
|
|
224720
|
+
const files = {};
|
|
224721
|
+
for (const entry of fs3.readdirSync(dir)) {
|
|
224722
|
+
if (entry.name === "node_modules" || entry.name === ".git")
|
|
224723
|
+
continue;
|
|
224724
|
+
const fullPath = join64(dir, entry.name);
|
|
224725
|
+
const relativePath = prefix ? `${prefix}/${entry.name}` : entry.name;
|
|
224726
|
+
if (entry.isDirectory()) {
|
|
224727
|
+
Object.assign(files, collectExtensionFiles(fullPath, relativePath));
|
|
224728
|
+
} else if (entry.isFile()) {
|
|
224729
|
+
files[`extension/${relativePath}`] = fs3.readFileBytesSync(fullPath);
|
|
224730
|
+
}
|
|
224731
|
+
}
|
|
224732
|
+
return files;
|
|
224733
|
+
}
|
|
224734
|
+
async function createBundledVSCodeExtensionVsix() {
|
|
224735
|
+
const extensionDir = findBundledVSCodeExtensionDir();
|
|
224736
|
+
if (!extensionDir) {
|
|
224737
|
+
throw new Error(`Bundled VS Code extension not found at ${BUNDLED_EXTENSION_RELATIVE_PATH}.`);
|
|
224738
|
+
}
|
|
224739
|
+
const fs3 = getFsImplementation();
|
|
224740
|
+
const manifestPath3 = join64(extensionDir, "package.json");
|
|
224741
|
+
const manifest = jsonParse(fs3.readFileSync(manifestPath3, { encoding: "utf8" }));
|
|
224742
|
+
if (!manifest?.name || !manifest.version || !manifest.publisher) {
|
|
224743
|
+
throw new Error(`Invalid VS Code extension manifest at ${manifestPath3}.`);
|
|
224744
|
+
}
|
|
224745
|
+
const { zipSync: zipSync2 } = await Promise.resolve().then(() => (init_esm8(), exports_esm));
|
|
224746
|
+
const encoder = new TextEncoder;
|
|
224747
|
+
const files = collectExtensionFiles(extensionDir);
|
|
224748
|
+
files["extension.vsixmanifest"] = encoder.encode(buildVsixManifest(manifest));
|
|
224749
|
+
files["[Content_Types].xml"] = encoder.encode(buildContentTypesXml());
|
|
224750
|
+
const tempVsixPath = join64(os3.tmpdir(), `ur-agent-${manifest.name}-${manifest.version}-${Date.now()}.vsix`);
|
|
224751
|
+
writeFileSync10(tempVsixPath, Buffer.from(zipSync2(files, { level: 6 })));
|
|
224752
|
+
return tempVsixPath;
|
|
224753
|
+
}
|
|
224754
|
+
async function installBundledVSCodeExtension(command) {
|
|
224755
|
+
const tempVsixPath = await createBundledVSCodeExtensionVsix();
|
|
224756
|
+
try {
|
|
224757
|
+
await sleep(500);
|
|
224758
|
+
const result = await execFileNoThrowWithCwd(command, ["--force", "--install-extension", tempVsixPath], {
|
|
224759
|
+
env: getInstallationEnv()
|
|
224760
|
+
});
|
|
224761
|
+
if (result.code !== 0) {
|
|
224762
|
+
throw new Error(`${result.code}: ${result.error} ${result.stderr}`);
|
|
224763
|
+
}
|
|
224764
|
+
} finally {
|
|
224765
|
+
try {
|
|
224766
|
+
await getFsImplementation().unlink(tempVsixPath);
|
|
224767
|
+
} catch {}
|
|
224768
|
+
}
|
|
224769
|
+
}
|
|
224664
224770
|
function getVSCodeIDECommandByParentProcess() {
|
|
224665
224771
|
try {
|
|
224666
224772
|
const platform4 = getPlatform();
|
|
@@ -224942,7 +225048,7 @@ async function installFromArtifactory(command) {
|
|
|
224942
225048
|
throw error40;
|
|
224943
225049
|
}
|
|
224944
225050
|
}
|
|
224945
|
-
var ideOnboardingDialog = () => (init_IdeOnboardingDialog(), __toCommonJS(exports_IdeOnboardingDialog)), supportedIdeConfigs, isSupportedVSCodeTerminal, isSupportedJetBrainsTerminal, isSupportedTerminal, getWindowsUserProfile, currentIDESearch = null, EXTENSION_ID, cachedRunningIDEs = null, EDITOR_DISPLAY_NAMES, detectHostIP;
|
|
225051
|
+
var ideOnboardingDialog = () => (init_IdeOnboardingDialog(), __toCommonJS(exports_IdeOnboardingDialog)), supportedIdeConfigs, isSupportedVSCodeTerminal, isSupportedJetBrainsTerminal, isSupportedTerminal, getWindowsUserProfile, currentIDESearch = null, PUBLIC_EXTENSION_ID = "ur-agent.ur-inline-diffs", INTERNAL_EXTENSION_ID = "urhq.ur-internal", BUNDLED_EXTENSION_RELATIVE_PATH, EXTENSION_ID, cachedRunningIDEs = null, EDITOR_DISPLAY_NAMES, detectHostIP;
|
|
224946
225052
|
var init_ide = __esm(() => {
|
|
224947
225053
|
init_axios2();
|
|
224948
225054
|
init_execa();
|
|
@@ -225117,7 +225223,8 @@ var init_ide = __esm(() => {
|
|
|
225117
225223
|
logForDebugging("Unable to get Windows USERPROFILE via PowerShell - IDE detection may be incomplete");
|
|
225118
225224
|
return;
|
|
225119
225225
|
});
|
|
225120
|
-
|
|
225226
|
+
BUNDLED_EXTENSION_RELATIVE_PATH = join64("extensions", "vscode-ur-inline-diffs");
|
|
225227
|
+
EXTENSION_ID = process.env.USER_TYPE === "ant" ? INTERNAL_EXTENSION_ID : PUBLIC_EXTENSION_ID;
|
|
225121
225228
|
EDITOR_DISPLAY_NAMES = {
|
|
225122
225229
|
code: "VS Code",
|
|
225123
225230
|
cursor: "Cursor",
|
|
@@ -226530,7 +226637,7 @@ function createLinkedTransportPair() {
|
|
|
226530
226637
|
|
|
226531
226638
|
// src/services/mcp/client.ts
|
|
226532
226639
|
import { mkdir as mkdir9, readFile as readFile11, unlink as unlink4, writeFile as writeFile7 } from "fs/promises";
|
|
226533
|
-
import { dirname as
|
|
226640
|
+
import { dirname as dirname30, join as join65 } from "path";
|
|
226534
226641
|
function isMcpSessionExpiredError(error40) {
|
|
226535
226642
|
const httpStatus = "code" in error40 ? error40.code : undefined;
|
|
226536
226643
|
if (httpStatus !== 404) {
|
|
@@ -226563,7 +226670,7 @@ function setMcpAuthCacheEntry(serverId) {
|
|
|
226563
226670
|
const cache3 = await getMcpAuthCache();
|
|
226564
226671
|
cache3[serverId] = { timestamp: Date.now() };
|
|
226565
226672
|
const cachePath = getMcpAuthCachePath();
|
|
226566
|
-
await mkdir9(
|
|
226673
|
+
await mkdir9(dirname30(cachePath), { recursive: true });
|
|
226567
226674
|
await writeFile7(cachePath, jsonStringify(cache3));
|
|
226568
226675
|
authCachePromise = null;
|
|
226569
226676
|
}).catch(() => {});
|
|
@@ -227373,8 +227480,8 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
227373
227480
|
const client2 = new Client({
|
|
227374
227481
|
name: "ur",
|
|
227375
227482
|
title: "UR",
|
|
227376
|
-
version: "1.25.
|
|
227377
|
-
description: "
|
|
227483
|
+
version: "1.25.3",
|
|
227484
|
+
description: "UR-AGENT autonomous engineering workflow engine",
|
|
227378
227485
|
websiteUrl: PRODUCT_URL
|
|
227379
227486
|
}, {
|
|
227380
227487
|
capabilities: {}
|
|
@@ -227727,8 +227834,8 @@ var init_client5 = __esm(() => {
|
|
|
227727
227834
|
const client2 = new Client({
|
|
227728
227835
|
name: "ur",
|
|
227729
227836
|
title: "UR",
|
|
227730
|
-
version: "1.25.
|
|
227731
|
-
description: "
|
|
227837
|
+
version: "1.25.3",
|
|
227838
|
+
description: "UR-AGENT autonomous engineering workflow engine",
|
|
227732
227839
|
websiteUrl: PRODUCT_URL
|
|
227733
227840
|
}, {
|
|
227734
227841
|
capabilities: {
|
|
@@ -237540,9 +237647,9 @@ async function assertMinVersion() {
|
|
|
237540
237647
|
if (false) {}
|
|
237541
237648
|
try {
|
|
237542
237649
|
const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
|
|
237543
|
-
if (versionConfig.minVersion && lt("1.25.
|
|
237650
|
+
if (versionConfig.minVersion && lt("1.25.3", versionConfig.minVersion)) {
|
|
237544
237651
|
console.error(`
|
|
237545
|
-
It looks like your version of UR (${"1.25.
|
|
237652
|
+
It looks like your version of UR (${"1.25.3"}) needs an update.
|
|
237546
237653
|
A newer version (${versionConfig.minVersion} or higher) is required to continue.
|
|
237547
237654
|
|
|
237548
237655
|
To update, please run:
|
|
@@ -237758,7 +237865,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
237758
237865
|
logError2(new AutoUpdaterError("Another process is currently installing an update"));
|
|
237759
237866
|
logEvent("tengu_auto_updater_lock_contention", {
|
|
237760
237867
|
pid: process.pid,
|
|
237761
|
-
currentVersion: "1.25.
|
|
237868
|
+
currentVersion: "1.25.3"
|
|
237762
237869
|
});
|
|
237763
237870
|
return "in_progress";
|
|
237764
237871
|
}
|
|
@@ -237767,7 +237874,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
237767
237874
|
if (!env2.isRunningWithBun() && env2.isNpmFromWindowsPath()) {
|
|
237768
237875
|
logError2(new Error("Windows NPM detected in WSL environment"));
|
|
237769
237876
|
logEvent("tengu_auto_updater_windows_npm_in_wsl", {
|
|
237770
|
-
currentVersion: "1.25.
|
|
237877
|
+
currentVersion: "1.25.3"
|
|
237771
237878
|
});
|
|
237772
237879
|
console.error(`
|
|
237773
237880
|
Error: Windows NPM detected in WSL
|
|
@@ -238302,7 +238409,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
238302
238409
|
}
|
|
238303
238410
|
async function getDoctorDiagnostic() {
|
|
238304
238411
|
const installationType = await getCurrentInstallationType();
|
|
238305
|
-
const version2 = typeof MACRO !== "undefined" ? "1.25.
|
|
238412
|
+
const version2 = typeof MACRO !== "undefined" ? "1.25.3" : "unknown";
|
|
238306
238413
|
const installationPath = await getInstallationPath();
|
|
238307
238414
|
const invokedBinary = getInvokedBinary();
|
|
238308
238415
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -238974,7 +239081,7 @@ import {
|
|
|
238974
239081
|
writeFile as writeFile13
|
|
238975
239082
|
} from "fs/promises";
|
|
238976
239083
|
import { homedir as homedir20 } from "os";
|
|
238977
|
-
import { basename as basename15, delimiter as delimiter4, dirname as
|
|
239084
|
+
import { basename as basename15, delimiter as delimiter4, dirname as dirname31, join as join76, resolve as resolve21 } from "path";
|
|
238978
239085
|
function getPlatform2() {
|
|
238979
239086
|
const os4 = env2.platform;
|
|
238980
239087
|
const arch = process.arch === "x64" ? "x64" : process.arch === "arm64" ? "arm64" : null;
|
|
@@ -239017,7 +239124,7 @@ async function getVersionPaths(version2) {
|
|
|
239017
239124
|
const dirs = getBaseDirectories();
|
|
239018
239125
|
const dirsToCreate = [dirs.versions, dirs.staging, dirs.locks];
|
|
239019
239126
|
await Promise.all(dirsToCreate.map((dir) => mkdir11(dir, { recursive: true })));
|
|
239020
|
-
const executableParentDir =
|
|
239127
|
+
const executableParentDir = dirname31(dirs.executable);
|
|
239021
239128
|
await mkdir11(executableParentDir, { recursive: true });
|
|
239022
239129
|
const installPath = join76(dirs.versions, version2);
|
|
239023
239130
|
try {
|
|
@@ -239111,7 +239218,7 @@ async function tryWithVersionLock(versionFilePath, callback, retries = 0) {
|
|
|
239111
239218
|
}
|
|
239112
239219
|
}
|
|
239113
239220
|
async function atomicMoveToInstallPath(stagedBinaryPath, installPath) {
|
|
239114
|
-
await mkdir11(
|
|
239221
|
+
await mkdir11(dirname31(installPath), { recursive: true });
|
|
239115
239222
|
const tempInstallPath = `${installPath}.tmp.${process.pid}.${Date.now()}`;
|
|
239116
239223
|
try {
|
|
239117
239224
|
await copyFile2(stagedBinaryPath, tempInstallPath);
|
|
@@ -239237,8 +239344,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
239237
239344
|
const maxVersion = await getMaxVersion();
|
|
239238
239345
|
if (maxVersion && gt(version2, maxVersion)) {
|
|
239239
239346
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
|
|
239240
|
-
if (gte("1.25.
|
|
239241
|
-
logForDebugging(`Native installer: current version ${"1.25.
|
|
239347
|
+
if (gte("1.25.3", maxVersion)) {
|
|
239348
|
+
logForDebugging(`Native installer: current version ${"1.25.3"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
239242
239349
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
239243
239350
|
latency_ms: Date.now() - startTime,
|
|
239244
239351
|
max_version: maxVersion,
|
|
@@ -239249,7 +239356,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
239249
239356
|
version2 = maxVersion;
|
|
239250
239357
|
}
|
|
239251
239358
|
}
|
|
239252
|
-
if (!forceReinstall && version2 === "1.25.
|
|
239359
|
+
if (!forceReinstall && version2 === "1.25.3" && await versionIsAvailable(version2) && await isPossibleURBinary(executablePath)) {
|
|
239253
239360
|
logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
|
|
239254
239361
|
logEvent("tengu_native_update_complete", {
|
|
239255
239362
|
latency_ms: Date.now() - startTime,
|
|
@@ -239325,7 +239432,7 @@ async function updateSymlink(symlinkPath, targetPath) {
|
|
|
239325
239432
|
const isWindows2 = platform4.startsWith("win32");
|
|
239326
239433
|
if (isWindows2) {
|
|
239327
239434
|
try {
|
|
239328
|
-
const parentDir2 =
|
|
239435
|
+
const parentDir2 = dirname31(symlinkPath);
|
|
239329
239436
|
await mkdir11(parentDir2, { recursive: true });
|
|
239330
239437
|
let existingStats;
|
|
239331
239438
|
try {
|
|
@@ -239371,7 +239478,7 @@ async function updateSymlink(symlinkPath, targetPath) {
|
|
|
239371
239478
|
return false;
|
|
239372
239479
|
}
|
|
239373
239480
|
}
|
|
239374
|
-
const parentDir =
|
|
239481
|
+
const parentDir = dirname31(symlinkPath);
|
|
239375
239482
|
try {
|
|
239376
239483
|
await mkdir11(parentDir, { recursive: true });
|
|
239377
239484
|
logForDebugging(`Created directory ${parentDir} for symlink`);
|
|
@@ -239388,7 +239495,7 @@ async function updateSymlink(symlinkPath, targetPath) {
|
|
|
239388
239495
|
if (symlinkExists) {
|
|
239389
239496
|
try {
|
|
239390
239497
|
const currentTarget = await readlink(symlinkPath);
|
|
239391
|
-
const resolvedCurrentTarget = resolve21(
|
|
239498
|
+
const resolvedCurrentTarget = resolve21(dirname31(symlinkPath), currentTarget);
|
|
239392
239499
|
const resolvedTargetPath = resolve21(targetPath);
|
|
239393
239500
|
if (resolvedCurrentTarget === resolvedTargetPath) {
|
|
239394
239501
|
return false;
|
|
@@ -239428,7 +239535,7 @@ async function checkInstall(force = false) {
|
|
|
239428
239535
|
}
|
|
239429
239536
|
const dirs = getBaseDirectories();
|
|
239430
239537
|
const messages = [];
|
|
239431
|
-
const localBinDir =
|
|
239538
|
+
const localBinDir = dirname31(dirs.executable);
|
|
239432
239539
|
const resolvedLocalBinPath = resolve21(localBinDir);
|
|
239433
239540
|
const platform4 = getPlatform2();
|
|
239434
239541
|
const isWindows2 = platform4.startsWith("win32");
|
|
@@ -239452,7 +239559,7 @@ async function checkInstall(force = false) {
|
|
|
239452
239559
|
} else {
|
|
239453
239560
|
try {
|
|
239454
239561
|
const target = await readlink(dirs.executable);
|
|
239455
|
-
const absoluteTarget = resolve21(
|
|
239562
|
+
const absoluteTarget = resolve21(dirname31(dirs.executable), target);
|
|
239456
239563
|
if (!await isPossibleURBinary(absoluteTarget)) {
|
|
239457
239564
|
messages.push({
|
|
239458
239565
|
message: `UR symlink points to missing or invalid binary: ${target}`,
|
|
@@ -239559,7 +239666,7 @@ async function installLatestImpl(channelOrVersion, forceReinstall = false) {
|
|
|
239559
239666
|
async function getVersionFromSymlink(symlinkPath) {
|
|
239560
239667
|
try {
|
|
239561
239668
|
const target = await readlink(symlinkPath);
|
|
239562
|
-
const absoluteTarget = resolve21(
|
|
239669
|
+
const absoluteTarget = resolve21(dirname31(symlinkPath), target);
|
|
239563
239670
|
if (await isPossibleURBinary(absoluteTarget)) {
|
|
239564
239671
|
return absoluteTarget;
|
|
239565
239672
|
}
|
|
@@ -239654,7 +239761,7 @@ async function cleanupOldVersions() {
|
|
|
239654
239761
|
const dirs = getBaseDirectories();
|
|
239655
239762
|
const oneHourAgo = Date.now() - 3600000;
|
|
239656
239763
|
if (getPlatform2().startsWith("win32")) {
|
|
239657
|
-
const executableDir =
|
|
239764
|
+
const executableDir = dirname31(dirs.executable);
|
|
239658
239765
|
try {
|
|
239659
239766
|
const files = await readdir9(executableDir);
|
|
239660
239767
|
let cleanedCount = 0;
|
|
@@ -247579,7 +247686,7 @@ __export(exports_teamHelpers, {
|
|
|
247579
247686
|
cleanupSessionTeams: () => cleanupSessionTeams,
|
|
247580
247687
|
addHiddenPaneId: () => addHiddenPaneId
|
|
247581
247688
|
});
|
|
247582
|
-
import { mkdirSync as mkdirSync11, readFileSync as readFileSync18, writeFileSync as
|
|
247689
|
+
import { mkdirSync as mkdirSync11, readFileSync as readFileSync18, writeFileSync as writeFileSync11 } from "fs";
|
|
247583
247690
|
import { mkdir as mkdir14, readFile as readFile17, rm as rm4, writeFile as writeFile16 } from "fs/promises";
|
|
247584
247691
|
import { join as join79 } from "path";
|
|
247585
247692
|
function sanitizeName(name) {
|
|
@@ -247619,7 +247726,7 @@ async function readTeamFileAsync(teamName) {
|
|
|
247619
247726
|
function writeTeamFile(teamName, teamFile) {
|
|
247620
247727
|
const teamDir = getTeamDir(teamName);
|
|
247621
247728
|
mkdirSync11(teamDir, { recursive: true });
|
|
247622
|
-
|
|
247729
|
+
writeFileSync11(getTeamFilePath(teamName), jsonStringify(teamFile, null, 2));
|
|
247623
247730
|
}
|
|
247624
247731
|
async function writeTeamFileAsync(teamName, teamFile) {
|
|
247625
247732
|
const teamDir = getTeamDir(teamName);
|
|
@@ -262769,7 +262876,7 @@ import {
|
|
|
262769
262876
|
stat as stat21,
|
|
262770
262877
|
unlink as unlink10
|
|
262771
262878
|
} from "fs/promises";
|
|
262772
|
-
import { dirname as
|
|
262879
|
+
import { dirname as dirname32, isAbsolute as isAbsolute14, join as join80, relative as relative12 } from "path";
|
|
262773
262880
|
import { inspect as inspect3 } from "util";
|
|
262774
262881
|
function fileHistoryEnabled() {
|
|
262775
262882
|
if (getIsNonInteractiveSession()) {
|
|
@@ -263210,7 +263317,7 @@ async function createBackup(filePath, version2) {
|
|
|
263210
263317
|
} catch (e) {
|
|
263211
263318
|
if (!isENOENT(e))
|
|
263212
263319
|
throw e;
|
|
263213
|
-
await mkdir15(
|
|
263320
|
+
await mkdir15(dirname32(backupPath), { recursive: true });
|
|
263214
263321
|
await copyFile3(filePath, backupPath);
|
|
263215
263322
|
}
|
|
263216
263323
|
await chmod6(backupPath, srcStats.mode);
|
|
@@ -263242,7 +263349,7 @@ async function restoreBackup(filePath, backupFileName) {
|
|
|
263242
263349
|
} catch (e) {
|
|
263243
263350
|
if (!isENOENT(e))
|
|
263244
263351
|
throw e;
|
|
263245
|
-
await mkdir15(
|
|
263352
|
+
await mkdir15(dirname32(filePath), { recursive: true });
|
|
263246
263353
|
await copyFile3(backupPath, filePath);
|
|
263247
263354
|
}
|
|
263248
263355
|
await chmod6(filePath, backupStats.mode);
|
|
@@ -281556,7 +281663,7 @@ var builders = null;
|
|
|
281556
281663
|
import { realpath as realpath10 } from "fs/promises";
|
|
281557
281664
|
import {
|
|
281558
281665
|
basename as basename22,
|
|
281559
|
-
dirname as
|
|
281666
|
+
dirname as dirname34,
|
|
281560
281667
|
isAbsolute as isAbsolute18,
|
|
281561
281668
|
join as join89,
|
|
281562
281669
|
sep as pathSep,
|
|
@@ -281779,7 +281886,7 @@ function isSkillFile(filePath) {
|
|
|
281779
281886
|
function transformSkillFiles(files) {
|
|
281780
281887
|
const filesByDir = new Map;
|
|
281781
281888
|
for (const file2 of files) {
|
|
281782
|
-
const dir =
|
|
281889
|
+
const dir = dirname34(file2.filePath);
|
|
281783
281890
|
const dirFiles = filesByDir.get(dir) ?? [];
|
|
281784
281891
|
dirFiles.push(file2);
|
|
281785
281892
|
filesByDir.set(dir, dirFiles);
|
|
@@ -281808,15 +281915,15 @@ function buildNamespace(targetDir, baseDir) {
|
|
|
281808
281915
|
return relativePath ? relativePath.split(pathSep).join(":") : "";
|
|
281809
281916
|
}
|
|
281810
281917
|
function getSkillCommandName(filePath, baseDir) {
|
|
281811
|
-
const skillDirectory =
|
|
281812
|
-
const parentOfSkillDir =
|
|
281918
|
+
const skillDirectory = dirname34(filePath);
|
|
281919
|
+
const parentOfSkillDir = dirname34(skillDirectory);
|
|
281813
281920
|
const commandBaseName = basename22(skillDirectory);
|
|
281814
281921
|
const namespace = buildNamespace(parentOfSkillDir, baseDir);
|
|
281815
281922
|
return namespace ? `${namespace}:${commandBaseName}` : commandBaseName;
|
|
281816
281923
|
}
|
|
281817
281924
|
function getRegularCommandName(filePath, baseDir) {
|
|
281818
281925
|
const fileName = basename22(filePath);
|
|
281819
|
-
const fileDirectory =
|
|
281926
|
+
const fileDirectory = dirname34(filePath);
|
|
281820
281927
|
const commandBaseName = fileName.replace(/\.md$/, "");
|
|
281821
281928
|
const namespace = buildNamespace(fileDirectory, baseDir);
|
|
281822
281929
|
return namespace ? `${namespace}:${commandBaseName}` : commandBaseName;
|
|
@@ -281839,7 +281946,7 @@ async function loadSkillsFromCommandsDir(cwd2) {
|
|
|
281839
281946
|
} of processedFiles) {
|
|
281840
281947
|
try {
|
|
281841
281948
|
const isSkillFormat = isSkillFile(filePath);
|
|
281842
|
-
const skillDirectory = isSkillFormat ?
|
|
281949
|
+
const skillDirectory = isSkillFormat ? dirname34(filePath) : undefined;
|
|
281843
281950
|
const cmdName = getCommandName2({
|
|
281844
281951
|
baseDir,
|
|
281845
281952
|
filePath,
|
|
@@ -281891,7 +281998,7 @@ async function discoverSkillDirsForPaths(filePaths, cwd2) {
|
|
|
281891
281998
|
const resolvedCwd = cwd2.endsWith(pathSep) ? cwd2.slice(0, -1) : cwd2;
|
|
281892
281999
|
const newDirs = [];
|
|
281893
282000
|
for (const filePath of filePaths) {
|
|
281894
|
-
let currentDir =
|
|
282001
|
+
let currentDir = dirname34(filePath);
|
|
281895
282002
|
while (currentDir.startsWith(resolvedCwd + pathSep)) {
|
|
281896
282003
|
const skillDir = join89(currentDir, ".ur", "skills");
|
|
281897
282004
|
if (!dynamicSkillDirs.has(skillDir)) {
|
|
@@ -281905,7 +282012,7 @@ async function discoverSkillDirsForPaths(filePaths, cwd2) {
|
|
|
281905
282012
|
newDirs.push(skillDir);
|
|
281906
282013
|
} catch {}
|
|
281907
282014
|
}
|
|
281908
|
-
const parent =
|
|
282015
|
+
const parent = dirname34(currentDir);
|
|
281909
282016
|
if (parent === currentDir)
|
|
281910
282017
|
break;
|
|
281911
282018
|
currentDir = parent;
|
|
@@ -282409,7 +282516,7 @@ var init_fileOperationAnalytics = __esm(() => {
|
|
|
282409
282516
|
|
|
282410
282517
|
// src/utils/gitDiff.ts
|
|
282411
282518
|
import { access as access5, readFile as readFile23 } from "fs/promises";
|
|
282412
|
-
import { dirname as
|
|
282519
|
+
import { dirname as dirname35, join as join90, relative as relative16, sep as sep16 } from "path";
|
|
282413
282520
|
async function fetchGitDiff() {
|
|
282414
282521
|
const isGit = await getIsGit();
|
|
282415
282522
|
if (!isGit)
|
|
@@ -282593,7 +282700,7 @@ function parseShortstat(stdout) {
|
|
|
282593
282700
|
};
|
|
282594
282701
|
}
|
|
282595
282702
|
async function fetchSingleFileGitDiff(absoluteFilePath) {
|
|
282596
|
-
const gitRoot = findGitRoot(
|
|
282703
|
+
const gitRoot = findGitRoot(dirname35(absoluteFilePath));
|
|
282597
282704
|
if (!gitRoot)
|
|
282598
282705
|
return null;
|
|
282599
282706
|
const gitPath = relative16(gitRoot, absoluteFilePath).split(sep16).join("/");
|
|
@@ -285716,7 +285823,7 @@ var init_UI8 = __esm(() => {
|
|
|
285716
285823
|
});
|
|
285717
285824
|
|
|
285718
285825
|
// src/tools/FileEditTool/FileEditTool.ts
|
|
285719
|
-
import { dirname as
|
|
285826
|
+
import { dirname as dirname36, isAbsolute as isAbsolute19, sep as sep17 } from "path";
|
|
285720
285827
|
function readFileForEdit(absoluteFilePath) {
|
|
285721
285828
|
try {
|
|
285722
285829
|
const meta = readFileSyncWithMetadata(absoluteFilePath);
|
|
@@ -286020,7 +286127,7 @@ String: ${old_string}`,
|
|
|
286020
286127
|
activateConditionalSkillsForPaths([absoluteFilePath], cwd2);
|
|
286021
286128
|
}
|
|
286022
286129
|
await diagnosticTracker.beforeFileEdited(absoluteFilePath);
|
|
286023
|
-
await fs4.mkdir(
|
|
286130
|
+
await fs4.mkdir(dirname36(absoluteFilePath));
|
|
286024
286131
|
if (fileHistoryEnabled()) {
|
|
286025
286132
|
await fileHistoryTrackEdit(updateFileHistoryState, absoluteFilePath, parentMessage?.uuid ?? "");
|
|
286026
286133
|
}
|
|
@@ -286611,7 +286718,7 @@ var init_UI9 = __esm(() => {
|
|
|
286611
286718
|
});
|
|
286612
286719
|
|
|
286613
286720
|
// src/tools/FileWriteTool/FileWriteTool.ts
|
|
286614
|
-
import { dirname as
|
|
286721
|
+
import { dirname as dirname37, sep as sep18 } from "path";
|
|
286615
286722
|
var inputSchema13, outputSchema10, FileWriteTool;
|
|
286616
286723
|
var init_FileWriteTool = __esm(() => {
|
|
286617
286724
|
init_analytics();
|
|
@@ -286751,7 +286858,7 @@ var init_FileWriteTool = __esm(() => {
|
|
|
286751
286858
|
},
|
|
286752
286859
|
async call({ file_path, content }, { readFileState, updateFileHistoryState, dynamicSkillDirTriggers }, _, parentMessage) {
|
|
286753
286860
|
const fullFilePath = expandPath(file_path);
|
|
286754
|
-
const dir =
|
|
286861
|
+
const dir = dirname37(fullFilePath);
|
|
286755
286862
|
const cwd2 = getCwd2();
|
|
286756
286863
|
const newSkillDirs = await discoverSkillDirsForPaths([fullFilePath], cwd2);
|
|
286757
286864
|
if (newSkillDirs.length > 0) {
|
|
@@ -286893,7 +287000,7 @@ var init_FileWriteTool = __esm(() => {
|
|
|
286893
287000
|
});
|
|
286894
287001
|
|
|
286895
287002
|
// src/utils/plugins/orphanedPluginFilter.ts
|
|
286896
|
-
import { dirname as
|
|
287003
|
+
import { dirname as dirname38, isAbsolute as isAbsolute21, join as join91, normalize as normalize11, relative as relative19, sep as sep19 } from "path";
|
|
286897
287004
|
async function getGlobExclusionsForPluginCache(searchPath) {
|
|
286898
287005
|
const cachePath = normalize11(join91(getPluginsDirectory(), "cache"));
|
|
286899
287006
|
if (searchPath && !pathsOverlap(searchPath, cachePath)) {
|
|
@@ -286913,7 +287020,7 @@ async function getGlobExclusionsForPluginCache(searchPath) {
|
|
|
286913
287020
|
ORPHANED_AT_FILENAME
|
|
286914
287021
|
], cachePath, new AbortController().signal);
|
|
286915
287022
|
cachedExclusions = markers.map((markerPath) => {
|
|
286916
|
-
const versionDir =
|
|
287023
|
+
const versionDir = dirname38(markerPath);
|
|
286917
287024
|
const rel = isAbsolute21(versionDir) ? relative19(cachePath, versionDir) : versionDir;
|
|
286918
287025
|
const posixRelative = rel.replace(/\\/g, "/");
|
|
286919
287026
|
return `!**/${posixRelative}/**`;
|
|
@@ -286943,12 +287050,12 @@ var init_orphanedPluginFilter = __esm(() => {
|
|
|
286943
287050
|
});
|
|
286944
287051
|
|
|
286945
287052
|
// src/utils/glob.ts
|
|
286946
|
-
import { basename as basename24, dirname as
|
|
287053
|
+
import { basename as basename24, dirname as dirname39, isAbsolute as isAbsolute22, join as join92, sep as sep20 } from "path";
|
|
286947
287054
|
function extractGlobBaseDirectory(pattern) {
|
|
286948
287055
|
const globChars = /[*?[{]/;
|
|
286949
287056
|
const match = pattern.match(globChars);
|
|
286950
287057
|
if (!match || match.index === undefined) {
|
|
286951
|
-
const dir =
|
|
287058
|
+
const dir = dirname39(pattern);
|
|
286952
287059
|
const file2 = basename24(pattern);
|
|
286953
287060
|
return { baseDir: dir, relativePattern: file2 };
|
|
286954
287061
|
}
|
|
@@ -292810,7 +292917,7 @@ var init_embeddings = __esm(() => {
|
|
|
292810
292917
|
// src/utils/codeIndex/store.ts
|
|
292811
292918
|
import { createHash as createHash18 } from "crypto";
|
|
292812
292919
|
import { mkdir as mkdir21, readFile as readFile25, writeFile as writeFile22 } from "fs/promises";
|
|
292813
|
-
import { dirname as
|
|
292920
|
+
import { dirname as dirname40, join as join96 } from "path";
|
|
292814
292921
|
function codeIndexDir(root2) {
|
|
292815
292922
|
return join96(root2, ".ur", "code-index");
|
|
292816
292923
|
}
|
|
@@ -292858,7 +292965,7 @@ async function loadIndex(root2) {
|
|
|
292858
292965
|
}
|
|
292859
292966
|
async function saveIndex(root2, index2) {
|
|
292860
292967
|
const path13 = indexPath(root2);
|
|
292861
|
-
await mkdir21(
|
|
292968
|
+
await mkdir21(dirname40(path13), { recursive: true });
|
|
292862
292969
|
await writeFile22(path13, JSON.stringify(index2), { encoding: "utf-8" });
|
|
292863
292970
|
}
|
|
292864
292971
|
var init_store = () => {};
|
|
@@ -293159,7 +293266,7 @@ var init_indexer = __esm(() => {
|
|
|
293159
293266
|
});
|
|
293160
293267
|
|
|
293161
293268
|
// src/utils/codeIndex/graph.ts
|
|
293162
|
-
import { existsSync as existsSync15, mkdirSync as mkdirSync12, readFileSync as readFileSync21, writeFileSync as
|
|
293269
|
+
import { existsSync as existsSync15, mkdirSync as mkdirSync12, readFileSync as readFileSync21, writeFileSync as writeFileSync12 } from "fs";
|
|
293163
293270
|
import { posix as posix6, resolve as resolve32 } from "path";
|
|
293164
293271
|
import { join as join97 } from "path";
|
|
293165
293272
|
function matchAll2(text, regexes) {
|
|
@@ -293317,7 +293424,7 @@ async function buildCodeGraph(options2) {
|
|
|
293317
293424
|
}
|
|
293318
293425
|
const graph = buildGraphFromFiles(sources);
|
|
293319
293426
|
mkdirSync12(join97(options2.root, ".ur", "code-index"), { recursive: true });
|
|
293320
|
-
|
|
293427
|
+
writeFileSync12(graphPath(options2.root), `${JSON.stringify(graph, null, 2)}
|
|
293321
293428
|
`);
|
|
293322
293429
|
return graph;
|
|
293323
293430
|
}
|
|
@@ -293368,7 +293475,7 @@ var init_graph = __esm(() => {
|
|
|
293368
293475
|
|
|
293369
293476
|
// src/utils/codeIndex/repoIndex.ts
|
|
293370
293477
|
import { createHash as createHash19 } from "crypto";
|
|
293371
|
-
import { existsSync as existsSync16, mkdirSync as mkdirSync13, readFileSync as readFileSync22, writeFileSync as
|
|
293478
|
+
import { existsSync as existsSync16, mkdirSync as mkdirSync13, readFileSync as readFileSync22, writeFileSync as writeFileSync13 } from "fs";
|
|
293372
293479
|
import { join as join98, posix as posix7 } from "path";
|
|
293373
293480
|
function sha12(content) {
|
|
293374
293481
|
return createHash19("sha1").update(content).digest("hex");
|
|
@@ -293681,17 +293788,17 @@ async function buildRepoIndex(options2) {
|
|
|
293681
293788
|
const docs = { version: 1, builtAt: now5, docs: docEntries };
|
|
293682
293789
|
const configs = { version: 1, builtAt: now5, configs: configEntries };
|
|
293683
293790
|
mkdirSync13(repoIndexDir(options2.root), { recursive: true });
|
|
293684
|
-
|
|
293791
|
+
writeFileSync13(repoIndexPath(options2.root), `${JSON.stringify(repo, null, 2)}
|
|
293685
293792
|
`);
|
|
293686
|
-
|
|
293793
|
+
writeFileSync13(symbolIndexPath(options2.root), `${JSON.stringify(symbols, null, 2)}
|
|
293687
293794
|
`);
|
|
293688
|
-
|
|
293795
|
+
writeFileSync13(callIndexPath(options2.root), `${JSON.stringify(calls, null, 2)}
|
|
293689
293796
|
`);
|
|
293690
|
-
|
|
293797
|
+
writeFileSync13(testIndexPath(options2.root), `${JSON.stringify(tests, null, 2)}
|
|
293691
293798
|
`);
|
|
293692
|
-
|
|
293799
|
+
writeFileSync13(docIndexPath(options2.root), `${JSON.stringify(docs, null, 2)}
|
|
293693
293800
|
`);
|
|
293694
|
-
|
|
293801
|
+
writeFileSync13(configIndexPath(options2.root), `${JSON.stringify(configs, null, 2)}
|
|
293695
293802
|
`);
|
|
293696
293803
|
return { repo, symbols, calls, tests, docs, configs };
|
|
293697
293804
|
}
|
|
@@ -294112,7 +294219,7 @@ function normalizeQuestionOptionInput(value) {
|
|
|
294112
294219
|
const option = objectValue3(value);
|
|
294113
294220
|
if (!option)
|
|
294114
294221
|
return value;
|
|
294115
|
-
const label = typeof option.label === "string" && option.label.trim() ? option.label.trim() : typeof option.value === "string" && option.value.trim() ? option.value.trim() : "";
|
|
294222
|
+
const label = typeof option.label === "string" && option.label.trim() ? option.label.trim() : typeof option.value === "string" && option.value.trim() ? option.value.trim() : typeof option.description === "string" && option.description.trim() ? option.description.trim() : "";
|
|
294116
294223
|
const description = typeof option.description === "string" && option.description.trim() ? option.description.trim() : label;
|
|
294117
294224
|
if (!label || !description)
|
|
294118
294225
|
return value;
|
|
@@ -308403,7 +308510,7 @@ var init_rootcause = __esm(() => {
|
|
|
308403
308510
|
|
|
308404
308511
|
// src/stability/ledger.ts
|
|
308405
308512
|
import { appendFileSync as appendFileSync4, existsSync as existsSync17, mkdirSync as mkdirSync14, readFileSync as readFileSync23 } from "fs";
|
|
308406
|
-
import { dirname as
|
|
308513
|
+
import { dirname as dirname41, join as join100 } from "path";
|
|
308407
308514
|
function ledgerPath(cwd2) {
|
|
308408
308515
|
return join100(cwd2, ".ur", "actions.jsonl");
|
|
308409
308516
|
}
|
|
@@ -308431,7 +308538,7 @@ function filesFromArgs(args) {
|
|
|
308431
308538
|
function recordAction(cwd2, record3) {
|
|
308432
308539
|
try {
|
|
308433
308540
|
const file2 = ledgerPath(cwd2);
|
|
308434
|
-
mkdirSync14(
|
|
308541
|
+
mkdirSync14(dirname41(file2), { recursive: true });
|
|
308435
308542
|
appendFileSync4(file2, JSON.stringify(record3) + `
|
|
308436
308543
|
`);
|
|
308437
308544
|
} catch {}
|
|
@@ -316106,7 +316213,7 @@ var init_toolSearch = __esm(() => {
|
|
|
316106
316213
|
// src/services/vcr.ts
|
|
316107
316214
|
import { createHash as createHash21, randomUUID as randomUUID24 } from "crypto";
|
|
316108
316215
|
import { mkdir as mkdir23, readFile as readFile31, writeFile as writeFile24 } from "fs/promises";
|
|
316109
|
-
import { dirname as
|
|
316216
|
+
import { dirname as dirname42, join as join103 } from "path";
|
|
316110
316217
|
function shouldUseVCR() {
|
|
316111
316218
|
if (false) {}
|
|
316112
316219
|
if (process.env.USER_TYPE === "ant" && isEnvTruthy(process.env.FORCE_VCR)) {
|
|
@@ -316133,7 +316240,7 @@ async function withFixture(input, fixtureName, f) {
|
|
|
316133
316240
|
throw new Error(`Fixture missing: ${filename}. Re-run tests with VCR_RECORD=1, then commit the result.`);
|
|
316134
316241
|
}
|
|
316135
316242
|
const result = await f();
|
|
316136
|
-
await mkdir23(
|
|
316243
|
+
await mkdir23(dirname42(filename), { recursive: true });
|
|
316137
316244
|
await writeFile24(filename, jsonStringify(result, null, 2), {
|
|
316138
316245
|
encoding: "utf8"
|
|
316139
316246
|
});
|
|
@@ -316172,7 +316279,7 @@ ${jsonStringify(dehydratedInput, null, 2)}`);
|
|
|
316172
316279
|
if (env2.isCI && !isEnvTruthy(process.env.VCR_RECORD)) {
|
|
316173
316280
|
return results;
|
|
316174
316281
|
}
|
|
316175
|
-
await mkdir23(
|
|
316282
|
+
await mkdir23(dirname42(filename), { recursive: true });
|
|
316176
316283
|
await writeFile24(filename, jsonStringify({
|
|
316177
316284
|
input: dehydratedInput,
|
|
316178
316285
|
output: results.map((message, index2) => mapMessage(message, dehydrateValue, index2))
|
|
@@ -318246,7 +318353,7 @@ var init_findRelevantMemories = __esm(() => {
|
|
|
318246
318353
|
|
|
318247
318354
|
// src/utils/attachments.ts
|
|
318248
318355
|
import { readdir as readdir18, stat as stat32 } from "fs/promises";
|
|
318249
|
-
import { dirname as
|
|
318356
|
+
import { dirname as dirname43, parse as parse12, relative as relative23, resolve as resolve33 } from "path";
|
|
318250
318357
|
import { randomUUID as randomUUID26 } from "crypto";
|
|
318251
318358
|
async function getAttachments(input, toolUseContext, ideSelection, queuedCommands, messages, querySource, options2) {
|
|
318252
318359
|
if (isEnvTruthy(process.env.UR_CODE_DISABLE_ATTACHMENTS) || isEnvTruthy(process.env.UR_CODE_SIMPLE)) {
|
|
@@ -318622,21 +318729,21 @@ async function getSelectedLinesFromIDE(ideSelection, toolUseContext) {
|
|
|
318622
318729
|
];
|
|
318623
318730
|
}
|
|
318624
318731
|
function getDirectoriesToProcess(targetPath, originalCwd) {
|
|
318625
|
-
const targetDir =
|
|
318732
|
+
const targetDir = dirname43(resolve33(targetPath));
|
|
318626
318733
|
const nestedDirs = [];
|
|
318627
318734
|
let currentDir = targetDir;
|
|
318628
318735
|
while (currentDir !== originalCwd && currentDir !== parse12(currentDir).root) {
|
|
318629
318736
|
if (currentDir.startsWith(originalCwd)) {
|
|
318630
318737
|
nestedDirs.push(currentDir);
|
|
318631
318738
|
}
|
|
318632
|
-
currentDir =
|
|
318739
|
+
currentDir = dirname43(currentDir);
|
|
318633
318740
|
}
|
|
318634
318741
|
nestedDirs.reverse();
|
|
318635
318742
|
const cwdLevelDirs = [];
|
|
318636
318743
|
currentDir = originalCwd;
|
|
318637
318744
|
while (currentDir !== parse12(currentDir).root) {
|
|
318638
318745
|
cwdLevelDirs.push(currentDir);
|
|
318639
|
-
currentDir =
|
|
318746
|
+
currentDir = dirname43(currentDir);
|
|
318640
318747
|
}
|
|
318641
318748
|
cwdLevelDirs.reverse();
|
|
318642
318749
|
return { nestedDirs, cwdLevelDirs };
|
|
@@ -319882,21 +319989,21 @@ var init_attachments2 = __esm(() => {
|
|
|
319882
319989
|
});
|
|
319883
319990
|
|
|
319884
319991
|
// src/utils/plugins/loadPluginCommands.ts
|
|
319885
|
-
import { basename as basename28, dirname as
|
|
319992
|
+
import { basename as basename28, dirname as dirname44, join as join106 } from "path";
|
|
319886
319993
|
function isSkillFile2(filePath) {
|
|
319887
319994
|
return /^skill\.md$/i.test(basename28(filePath));
|
|
319888
319995
|
}
|
|
319889
319996
|
function getCommandNameFromFile(filePath, baseDir, pluginName) {
|
|
319890
319997
|
const isSkill = isSkillFile2(filePath);
|
|
319891
319998
|
if (isSkill) {
|
|
319892
|
-
const skillDirectory =
|
|
319893
|
-
const parentOfSkillDir =
|
|
319999
|
+
const skillDirectory = dirname44(filePath);
|
|
320000
|
+
const parentOfSkillDir = dirname44(skillDirectory);
|
|
319894
320001
|
const commandBaseName = basename28(skillDirectory);
|
|
319895
320002
|
const relativePath = parentOfSkillDir.startsWith(baseDir) ? parentOfSkillDir.slice(baseDir.length).replace(/^\//, "") : "";
|
|
319896
320003
|
const namespace = relativePath ? relativePath.split("/").join(":") : "";
|
|
319897
320004
|
return namespace ? `${pluginName}:${namespace}:${commandBaseName}` : `${pluginName}:${commandBaseName}`;
|
|
319898
320005
|
} else {
|
|
319899
|
-
const fileDirectory =
|
|
320006
|
+
const fileDirectory = dirname44(filePath);
|
|
319900
320007
|
const commandBaseName = basename28(filePath).replace(/\.md$/, "");
|
|
319901
320008
|
const relativePath = fileDirectory.startsWith(baseDir) ? fileDirectory.slice(baseDir.length).replace(/^\//, "") : "";
|
|
319902
320009
|
const namespace = relativePath ? relativePath.split("/").join(":") : "";
|
|
@@ -319923,7 +320030,7 @@ async function collectMarkdownFiles(dirPath, baseDir, loadedPaths) {
|
|
|
319923
320030
|
function transformPluginSkillFiles(files) {
|
|
319924
320031
|
const filesByDir = new Map;
|
|
319925
320032
|
for (const file2 of files) {
|
|
319926
|
-
const dir =
|
|
320033
|
+
const dir = dirname44(file2.filePath);
|
|
319927
320034
|
const dirFiles = filesByDir.get(dir) ?? [];
|
|
319928
320035
|
dirFiles.push(file2);
|
|
319929
320036
|
filesByDir.set(dir, dirFiles);
|
|
@@ -320012,7 +320119,7 @@ function createPluginCommand(commandName, file2, sourceName, pluginManifest, plu
|
|
|
320012
320119
|
return displayName || commandName;
|
|
320013
320120
|
},
|
|
320014
320121
|
async getPromptForCommand(args, context3) {
|
|
320015
|
-
let finalContent = config2.isSkillMode ? `Base directory for this skill: ${
|
|
320122
|
+
let finalContent = config2.isSkillMode ? `Base directory for this skill: ${dirname44(file2.filePath)}
|
|
320016
320123
|
|
|
320017
320124
|
${content}` : content;
|
|
320018
320125
|
finalContent = substituteArguments(finalContent, args, true, argumentNames);
|
|
@@ -320024,7 +320131,7 @@ ${content}` : content;
|
|
|
320024
320131
|
finalContent = substituteUserConfigInContent(finalContent, loadPluginOptions(sourceName), pluginManifest.userConfig);
|
|
320025
320132
|
}
|
|
320026
320133
|
if (config2.isSkillMode) {
|
|
320027
|
-
const rawSkillDir =
|
|
320134
|
+
const rawSkillDir = dirname44(file2.filePath);
|
|
320028
320135
|
const skillDir = process.platform === "win32" ? rawSkillDir.replace(/\\/g, "/") : rawSkillDir;
|
|
320029
320136
|
finalContent = finalContent.replace(/\$\{UR_SKILL_DIR\}/g, skillDir);
|
|
320030
320137
|
}
|
|
@@ -320084,7 +320191,7 @@ async function loadSkillsFromDirectory(skillsPath, pluginName, sourceName, plugi
|
|
|
320084
320191
|
const skillName = `${pluginName}:${basename28(skillsPath)}`;
|
|
320085
320192
|
const file2 = {
|
|
320086
320193
|
filePath: directSkillPath,
|
|
320087
|
-
baseDir:
|
|
320194
|
+
baseDir: dirname44(directSkillPath),
|
|
320088
320195
|
frontmatter,
|
|
320089
320196
|
content: markdownContent
|
|
320090
320197
|
};
|
|
@@ -320133,7 +320240,7 @@ async function loadSkillsFromDirectory(skillsPath, pluginName, sourceName, plugi
|
|
|
320133
320240
|
const skillName = `${pluginName}:${entry.name}`;
|
|
320134
320241
|
const file2 = {
|
|
320135
320242
|
filePath: skillFilePath,
|
|
320136
|
-
baseDir:
|
|
320243
|
+
baseDir: dirname44(skillFilePath),
|
|
320137
320244
|
frontmatter,
|
|
320138
320245
|
content: markdownContent
|
|
320139
320246
|
};
|
|
@@ -320246,7 +320353,7 @@ var init_loadPluginCommands = __esm(() => {
|
|
|
320246
320353
|
} : frontmatter;
|
|
320247
320354
|
const file2 = {
|
|
320248
320355
|
filePath: commandPath,
|
|
320249
|
-
baseDir:
|
|
320356
|
+
baseDir: dirname44(commandPath),
|
|
320250
320357
|
frontmatter: finalFrontmatter,
|
|
320251
320358
|
content: markdownContent
|
|
320252
320359
|
};
|
|
@@ -320509,7 +320616,7 @@ import {
|
|
|
320509
320616
|
writeFile as writeFile25
|
|
320510
320617
|
} from "fs/promises";
|
|
320511
320618
|
import { tmpdir as tmpdir8 } from "os";
|
|
320512
|
-
import { basename as basename30, dirname as
|
|
320619
|
+
import { basename as basename30, dirname as dirname46, join as join108 } from "path";
|
|
320513
320620
|
function isPluginZipCacheEnabled() {
|
|
320514
320621
|
return isEnvTruthy(process.env.UR_CODE_PLUGIN_USE_ZIP_CACHE);
|
|
320515
320622
|
}
|
|
@@ -320572,7 +320679,7 @@ async function cleanupSessionPluginCache() {
|
|
|
320572
320679
|
}
|
|
320573
320680
|
}
|
|
320574
320681
|
async function atomicWriteToZipCache(targetPath, data) {
|
|
320575
|
-
const dir =
|
|
320682
|
+
const dir = dirname46(targetPath);
|
|
320576
320683
|
await getFsImplementation().mkdir(dir);
|
|
320577
320684
|
const tmpName = `.${basename30(targetPath)}.tmp.${randomBytes11(4).toString("hex")}`;
|
|
320578
320685
|
const tmpPath = join108(dir, tmpName);
|
|
@@ -320669,7 +320776,7 @@ async function extractZipToDirectory(zipPath, targetDir) {
|
|
|
320669
320776
|
continue;
|
|
320670
320777
|
}
|
|
320671
320778
|
const fullPath = join108(targetDir, relPath);
|
|
320672
|
-
await getFsImplementation().mkdir(
|
|
320779
|
+
await getFsImplementation().mkdir(dirname46(fullPath));
|
|
320673
320780
|
await writeFile25(fullPath, data);
|
|
320674
320781
|
const mode = modes[relPath];
|
|
320675
320782
|
if (mode && mode & 73) {
|
|
@@ -321165,7 +321272,7 @@ var init_marketplaceHelpers = __esm(() => {
|
|
|
321165
321272
|
|
|
321166
321273
|
// src/utils/plugins/officialMarketplaceGcs.ts
|
|
321167
321274
|
import { chmod as chmod9, mkdir as mkdir25, readFile as readFile34, rename as rename4, rm as rm7, writeFile as writeFile27 } from "fs/promises";
|
|
321168
|
-
import { dirname as
|
|
321275
|
+
import { dirname as dirname47, join as join110, resolve as resolve34, sep as sep22 } from "path";
|
|
321169
321276
|
async function fetchOfficialMarketplaceFromGcs(installLocation, marketplacesCacheDir) {
|
|
321170
321277
|
if (!GCS_BASE) {
|
|
321171
321278
|
return null;
|
|
@@ -321215,7 +321322,7 @@ async function fetchOfficialMarketplaceFromGcs(installLocation, marketplacesCach
|
|
|
321215
321322
|
if (!rel || rel.endsWith("/"))
|
|
321216
321323
|
continue;
|
|
321217
321324
|
const dest = join110(staging, rel);
|
|
321218
|
-
await mkdir25(
|
|
321325
|
+
await mkdir25(dirname47(dest), { recursive: true });
|
|
321219
321326
|
await writeFile27(dest, data);
|
|
321220
321327
|
const mode = modes[arcPath];
|
|
321221
321328
|
if (mode && mode & 73) {
|
|
@@ -321294,7 +321401,7 @@ var init_officialMarketplaceGcs = __esm(() => {
|
|
|
321294
321401
|
|
|
321295
321402
|
// src/utils/plugins/marketplaceManager.ts
|
|
321296
321403
|
import { writeFile as writeFile28 } from "fs/promises";
|
|
321297
|
-
import { basename as basename31, dirname as
|
|
321404
|
+
import { basename as basename31, dirname as dirname48, isAbsolute as isAbsolute25, join as join111, resolve as resolve35, sep as sep23 } from "path";
|
|
321298
321405
|
function getKnownMarketplacesFile() {
|
|
321299
321406
|
return join111(getPluginsDirectory(), "known_marketplaces.json");
|
|
321300
321407
|
}
|
|
@@ -321974,7 +322081,7 @@ async function loadAndCacheMarketplace(source, onProgress) {
|
|
|
321974
322081
|
case "file": {
|
|
321975
322082
|
const absPath = resolve35(source.path);
|
|
321976
322083
|
marketplacePath = absPath;
|
|
321977
|
-
temporaryCachePath =
|
|
322084
|
+
temporaryCachePath = dirname48(dirname48(absPath));
|
|
321978
322085
|
cleanupNeeded = false;
|
|
321979
322086
|
break;
|
|
321980
322087
|
}
|
|
@@ -321989,7 +322096,7 @@ async function loadAndCacheMarketplace(source, onProgress) {
|
|
|
321989
322096
|
temporaryCachePath = join111(cacheDir, source.name);
|
|
321990
322097
|
marketplacePath = join111(temporaryCachePath, ".ur-plugin", "marketplace.json");
|
|
321991
322098
|
cleanupNeeded = false;
|
|
321992
|
-
await fs4.mkdir(
|
|
322099
|
+
await fs4.mkdir(dirname48(marketplacePath));
|
|
321993
322100
|
await writeFile28(marketplacePath, jsonStringify({
|
|
321994
322101
|
name: source.name,
|
|
321995
322102
|
owner: source.owner ?? { name: "settings" },
|
|
@@ -322484,7 +322591,7 @@ var init_marketplaceManager = __esm(() => {
|
|
|
322484
322591
|
});
|
|
322485
322592
|
|
|
322486
322593
|
// src/utils/plugins/installedPluginsManager.ts
|
|
322487
|
-
import { dirname as
|
|
322594
|
+
import { dirname as dirname49, join as join112 } from "path";
|
|
322488
322595
|
function getInstalledPluginsFilePath() {
|
|
322489
322596
|
return join112(getPluginsDirectory(), "installed_plugins.json");
|
|
322490
322597
|
}
|
|
@@ -323050,7 +323157,7 @@ var init_pluginVersioning = __esm(() => {
|
|
|
323050
323157
|
// src/utils/plugins/pluginInstallationHelpers.ts
|
|
323051
323158
|
import { randomBytes as randomBytes12 } from "crypto";
|
|
323052
323159
|
import { rename as rename5, rm as rm8 } from "fs/promises";
|
|
323053
|
-
import { dirname as
|
|
323160
|
+
import { dirname as dirname50, join as join113, resolve as resolve36, sep as sep24 } from "path";
|
|
323054
323161
|
function getCurrentTimestamp() {
|
|
323055
323162
|
return new Date().toISOString();
|
|
323056
323163
|
}
|
|
@@ -323074,14 +323181,14 @@ async function cacheAndRegisterPlugin(pluginId, entry, scope = "user", projectPa
|
|
|
323074
323181
|
const versionedPath = getVersionedCachePath(pluginId, version2);
|
|
323075
323182
|
let finalPath = cacheResult.path;
|
|
323076
323183
|
if (cacheResult.path !== versionedPath) {
|
|
323077
|
-
await getFsImplementation().mkdir(
|
|
323184
|
+
await getFsImplementation().mkdir(dirname50(versionedPath));
|
|
323078
323185
|
await rm8(versionedPath, { recursive: true, force: true });
|
|
323079
323186
|
const normalizedCachePath = cacheResult.path.endsWith(sep24) ? cacheResult.path : cacheResult.path + sep24;
|
|
323080
323187
|
const isSubdirectory = versionedPath.startsWith(normalizedCachePath);
|
|
323081
323188
|
if (isSubdirectory) {
|
|
323082
|
-
const tempPath = join113(
|
|
323189
|
+
const tempPath = join113(dirname50(cacheResult.path), `.ur-plugin-temp-${Date.now()}-${randomBytes12(4).toString("hex")}`);
|
|
323083
323190
|
await rename5(cacheResult.path, tempPath);
|
|
323084
|
-
await getFsImplementation().mkdir(
|
|
323191
|
+
await getFsImplementation().mkdir(dirname50(versionedPath));
|
|
323085
323192
|
await rename5(tempPath, versionedPath);
|
|
323086
323193
|
} else {
|
|
323087
323194
|
await rename5(cacheResult.path, versionedPath);
|
|
@@ -323310,7 +323417,7 @@ import {
|
|
|
323310
323417
|
stat as stat35,
|
|
323311
323418
|
symlink as symlink3
|
|
323312
323419
|
} from "fs/promises";
|
|
323313
|
-
import { basename as basename32, dirname as
|
|
323420
|
+
import { basename as basename32, dirname as dirname51, join as join114, relative as relative24, resolve as resolve37, sep as sep25 } from "path";
|
|
323314
323421
|
function getPluginCachePath() {
|
|
323315
323422
|
return join114(getPluginsDirectory(), "cache");
|
|
323316
323423
|
}
|
|
@@ -323340,7 +323447,7 @@ async function probeSeedCache(pluginId, version2) {
|
|
|
323340
323447
|
}
|
|
323341
323448
|
async function probeSeedCacheAnyVersion(pluginId) {
|
|
323342
323449
|
for (const seedDir of getPluginSeedDirs()) {
|
|
323343
|
-
const pluginDir =
|
|
323450
|
+
const pluginDir = dirname51(getVersionedCachePathIn(seedDir, pluginId, "_"));
|
|
323344
323451
|
try {
|
|
323345
323452
|
const versions2 = await readdir21(pluginDir);
|
|
323346
323453
|
if (versions2.length !== 1)
|
|
@@ -323382,7 +323489,7 @@ async function copyDir(src, dest) {
|
|
|
323382
323489
|
if (resolvedTarget.startsWith(srcPrefix) || resolvedTarget === resolvedSrc) {
|
|
323383
323490
|
const targetRelativeToSrc = relative24(resolvedSrc, resolvedTarget);
|
|
323384
323491
|
const destTargetPath = join114(dest, targetRelativeToSrc);
|
|
323385
|
-
const relativeLinkPath = relative24(
|
|
323492
|
+
const relativeLinkPath = relative24(dirname51(destPath), destTargetPath);
|
|
323386
323493
|
await symlink3(relativeLinkPath, destPath);
|
|
323387
323494
|
} else {
|
|
323388
323495
|
await symlink3(resolvedTarget, destPath);
|
|
@@ -323413,7 +323520,7 @@ async function copyPluginToVersionedCache(sourcePath, pluginId, version2, entry,
|
|
|
323413
323520
|
logForDebugging(`Using seed cache for ${pluginId}@${version2} at ${seedPath}`);
|
|
323414
323521
|
return seedPath;
|
|
323415
323522
|
}
|
|
323416
|
-
await getFsImplementation().mkdir(
|
|
323523
|
+
await getFsImplementation().mkdir(dirname51(cachePath));
|
|
323417
323524
|
if (entry && typeof entry.source === "string" && marketplaceDir) {
|
|
323418
323525
|
const sourceDir = validatePathWithinBase(marketplaceDir, entry.source);
|
|
323419
323526
|
logForDebugging(`Copying source directory ${entry.source} for plugin ${pluginId}`);
|
|
@@ -331711,7 +331818,7 @@ __export(exports_terminalSetup, {
|
|
|
331711
331818
|
import { randomBytes as randomBytes14 } from "crypto";
|
|
331712
331819
|
import { copyFile as copyFile8, mkdir as mkdir26, readFile as readFile36, writeFile as writeFile29 } from "fs/promises";
|
|
331713
331820
|
import { homedir as homedir25, platform as platform4 } from "os";
|
|
331714
|
-
import { dirname as
|
|
331821
|
+
import { dirname as dirname52, join as join117 } from "path";
|
|
331715
331822
|
import { pathToFileURL as pathToFileURL7 } from "url";
|
|
331716
331823
|
function isVSCodeRemoteSSH() {
|
|
331717
331824
|
const askpassMain = process.env.VSCODE_GIT_ASKPASS_MAIN ?? "";
|
|
@@ -332033,7 +332140,7 @@ chars = "\\u001B\\r"`;
|
|
|
332033
332140
|
return `${color("warning", theme)("Error backing up existing Alacritty config. Bailing out.")}${EOL5}${source_default.dim(`See ${formatPathLink(configPath)}`)}${EOL5}${source_default.dim(`Backup path: ${formatPathLink(backupPath)}`)}${EOL5}`;
|
|
332034
332141
|
}
|
|
332035
332142
|
} else {
|
|
332036
|
-
await mkdir26(
|
|
332143
|
+
await mkdir26(dirname52(configPath), {
|
|
332037
332144
|
recursive: true
|
|
332038
332145
|
});
|
|
332039
332146
|
}
|
|
@@ -334476,7 +334583,7 @@ var init_TextInput = __esm(() => {
|
|
|
334476
334583
|
});
|
|
334477
334584
|
|
|
334478
334585
|
// src/utils/suggestions/directoryCompletion.ts
|
|
334479
|
-
import { basename as basename36, dirname as
|
|
334586
|
+
import { basename as basename36, dirname as dirname53, join as join120, sep as sep26 } from "path";
|
|
334480
334587
|
function parsePartialPath(partialPath, basePath) {
|
|
334481
334588
|
if (!partialPath) {
|
|
334482
334589
|
const directory2 = basePath || getCwd2();
|
|
@@ -334486,7 +334593,7 @@ function parsePartialPath(partialPath, basePath) {
|
|
|
334486
334593
|
if (partialPath.endsWith("/") || partialPath.endsWith(sep26)) {
|
|
334487
334594
|
return { directory: resolved, prefix: "" };
|
|
334488
334595
|
}
|
|
334489
|
-
const directory =
|
|
334596
|
+
const directory = dirname53(resolved);
|
|
334490
334597
|
const prefix = basename36(partialPath);
|
|
334491
334598
|
return { directory, prefix };
|
|
334492
334599
|
}
|
|
@@ -336161,7 +336268,7 @@ function Feedback({
|
|
|
336161
336268
|
platform: env2.platform,
|
|
336162
336269
|
gitRepo: envInfo.isGit,
|
|
336163
336270
|
terminal: env2.terminal,
|
|
336164
|
-
version: "1.25.
|
|
336271
|
+
version: "1.25.3",
|
|
336165
336272
|
transcript: normalizeMessagesForAPI(messages),
|
|
336166
336273
|
errors: sanitizedErrors,
|
|
336167
336274
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -336353,7 +336460,7 @@ function Feedback({
|
|
|
336353
336460
|
", ",
|
|
336354
336461
|
env2.terminal,
|
|
336355
336462
|
", v",
|
|
336356
|
-
"1.25.
|
|
336463
|
+
"1.25.3"
|
|
336357
336464
|
]
|
|
336358
336465
|
}, undefined, true, undefined, this)
|
|
336359
336466
|
]
|
|
@@ -336459,7 +336566,7 @@ ${sanitizedDescription}
|
|
|
336459
336566
|
` + `**Environment Info**
|
|
336460
336567
|
` + `- Platform: ${env2.platform}
|
|
336461
336568
|
` + `- Terminal: ${env2.terminal}
|
|
336462
|
-
` + `- Version: ${"1.25.
|
|
336569
|
+
` + `- Version: ${"1.25.3"}
|
|
336463
336570
|
` + `- Feedback ID: ${feedbackId}
|
|
336464
336571
|
` + `
|
|
336465
336572
|
**Errors**
|
|
@@ -339570,7 +339677,7 @@ function buildPrimarySection() {
|
|
|
339570
339677
|
}, undefined, false, undefined, this);
|
|
339571
339678
|
return [{
|
|
339572
339679
|
label: "Version",
|
|
339573
|
-
value: "1.25.
|
|
339680
|
+
value: "1.25.3"
|
|
339574
339681
|
}, {
|
|
339575
339682
|
label: "Session name",
|
|
339576
339683
|
value: nameValue
|
|
@@ -342848,7 +342955,7 @@ function Config({
|
|
|
342848
342955
|
}
|
|
342849
342956
|
}, undefined, false, undefined, this)
|
|
342850
342957
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime177.jsxDEV(ChannelDowngradeDialog, {
|
|
342851
|
-
currentVersion: "1.25.
|
|
342958
|
+
currentVersion: "1.25.3",
|
|
342852
342959
|
onChoice: (choice) => {
|
|
342853
342960
|
setShowSubmenu(null);
|
|
342854
342961
|
setTabsHidden(false);
|
|
@@ -342860,7 +342967,7 @@ function Config({
|
|
|
342860
342967
|
autoUpdatesChannel: "stable"
|
|
342861
342968
|
};
|
|
342862
342969
|
if (choice === "stay") {
|
|
342863
|
-
newSettings.minimumVersion = "1.25.
|
|
342970
|
+
newSettings.minimumVersion = "1.25.3";
|
|
342864
342971
|
}
|
|
342865
342972
|
updateSettingsForSource("userSettings", newSettings);
|
|
342866
342973
|
setSettingsData((prev_27) => ({
|
|
@@ -350930,7 +351037,7 @@ function HelpV2(t0) {
|
|
|
350930
351037
|
let t6;
|
|
350931
351038
|
if ($3[31] !== tabs) {
|
|
350932
351039
|
t6 = /* @__PURE__ */ jsx_dev_runtime204.jsxDEV(Tabs, {
|
|
350933
|
-
title: `UR v${"1.25.
|
|
351040
|
+
title: `UR v${"1.25.3"}`,
|
|
350934
351041
|
color: "professionalBlue",
|
|
350935
351042
|
defaultTab: "general",
|
|
350936
351043
|
children: tabs
|
|
@@ -351244,7 +351351,7 @@ var init_IdeAutoConnectDialog = __esm(() => {
|
|
|
351244
351351
|
});
|
|
351245
351352
|
|
|
351246
351353
|
// src/services/agents/ideDiffs.ts
|
|
351247
|
-
import { existsSync as existsSync18, mkdirSync as mkdirSync15, readFileSync as readFileSync24, rmSync as rmSync3, writeFileSync as
|
|
351354
|
+
import { existsSync as existsSync18, mkdirSync as mkdirSync15, readFileSync as readFileSync24, rmSync as rmSync3, writeFileSync as writeFileSync14 } from "fs";
|
|
351248
351355
|
import { join as join127 } from "path";
|
|
351249
351356
|
function ideDir(cwd2) {
|
|
351250
351357
|
return join127(cwd2, ".ur", "ide");
|
|
@@ -351277,7 +351384,7 @@ function loadManifest2(cwd2) {
|
|
|
351277
351384
|
}
|
|
351278
351385
|
function saveManifest2(cwd2, manifest) {
|
|
351279
351386
|
ensureDirs2(cwd2);
|
|
351280
|
-
|
|
351387
|
+
writeFileSync14(manifestPath3(cwd2), `${JSON.stringify(manifest, null, 2)}
|
|
351281
351388
|
`);
|
|
351282
351389
|
}
|
|
351283
351390
|
function nextId(manifest) {
|
|
@@ -351372,8 +351479,8 @@ async function createIdeDiffBundle(cwd2, options2 = {}) {
|
|
|
351372
351479
|
createdAt,
|
|
351373
351480
|
updatedAt: createdAt
|
|
351374
351481
|
};
|
|
351375
|
-
|
|
351376
|
-
|
|
351482
|
+
writeFileSync14(join127(ideDiffsDir(cwd2), patchFile), captured.diff);
|
|
351483
|
+
writeFileSync14(join127(ideDiffsDir(cwd2), metadataFile), `${JSON.stringify(bundle, null, 2)}
|
|
351377
351484
|
`);
|
|
351378
351485
|
manifest.diffs.push(bundle);
|
|
351379
351486
|
saveManifest2(cwd2, manifest);
|
|
@@ -351400,7 +351507,7 @@ function mutate(cwd2, id, fn) {
|
|
|
351400
351507
|
fn(bundle);
|
|
351401
351508
|
bundle.updatedAt = now5();
|
|
351402
351509
|
ensureDirs2(cwd2);
|
|
351403
|
-
|
|
351510
|
+
writeFileSync14(join127(ideDiffsDir(cwd2), bundle.metadataFile), `${JSON.stringify(bundle, null, 2)}
|
|
351404
351511
|
`);
|
|
351405
351512
|
saveManifest2(cwd2, manifest);
|
|
351406
351513
|
return bundle;
|
|
@@ -352675,7 +352782,7 @@ __export(exports_keybindings, {
|
|
|
352675
352782
|
call: () => call24
|
|
352676
352783
|
});
|
|
352677
352784
|
import { mkdir as mkdir31, writeFile as writeFile34 } from "fs/promises";
|
|
352678
|
-
import { dirname as
|
|
352785
|
+
import { dirname as dirname55 } from "path";
|
|
352679
352786
|
async function call24() {
|
|
352680
352787
|
if (!isKeybindingCustomizationEnabled()) {
|
|
352681
352788
|
return {
|
|
@@ -352685,7 +352792,7 @@ async function call24() {
|
|
|
352685
352792
|
}
|
|
352686
352793
|
const keybindingsPath = getKeybindingsPath();
|
|
352687
352794
|
let fileExists = false;
|
|
352688
|
-
await mkdir31(
|
|
352795
|
+
await mkdir31(dirname55(keybindingsPath), { recursive: true });
|
|
352689
352796
|
try {
|
|
352690
352797
|
await writeFile34(keybindingsPath, generateKeybindingsTemplate(), {
|
|
352691
352798
|
encoding: "utf-8",
|
|
@@ -363597,7 +363704,7 @@ var init_DiscoverPlugins = __esm(() => {
|
|
|
363597
363704
|
});
|
|
363598
363705
|
|
|
363599
363706
|
// src/services/plugins/pluginOperations.ts
|
|
363600
|
-
import { dirname as
|
|
363707
|
+
import { dirname as dirname56, join as join130 } from "path";
|
|
363601
363708
|
function assertInstallableScope(scope) {
|
|
363602
363709
|
if (!VALID_INSTALLABLE_SCOPES.includes(scope)) {
|
|
363603
363710
|
throw new Error(`Invalid scope "${scope}". Must be one of: ${VALID_INSTALLABLE_SCOPES.join(", ")}`);
|
|
@@ -364074,7 +364181,7 @@ async function performPluginUpdate({
|
|
|
364074
364181
|
}
|
|
364075
364182
|
throw e;
|
|
364076
364183
|
}
|
|
364077
|
-
const marketplaceDir = marketplaceStats.isDirectory() ? marketplaceInstallLocation :
|
|
364184
|
+
const marketplaceDir = marketplaceStats.isDirectory() ? marketplaceInstallLocation : dirname56(marketplaceInstallLocation);
|
|
364078
364185
|
sourcePath = join130(marketplaceDir, entry.source);
|
|
364079
364186
|
try {
|
|
364080
364187
|
await fs4.stat(sourcePath);
|
|
@@ -370912,7 +371019,7 @@ ${args ? "Additional user input: " + args : ""}
|
|
|
370912
371019
|
|
|
370913
371020
|
// src/utils/releaseNotes.ts
|
|
370914
371021
|
import { mkdir as mkdir32, readFile as readFile43, writeFile as writeFile37 } from "fs/promises";
|
|
370915
|
-
import { dirname as
|
|
371022
|
+
import { dirname as dirname58, join as join134 } from "path";
|
|
370916
371023
|
function getChangelogCachePath() {
|
|
370917
371024
|
return join134(getURConfigHomeDir(), "cache", "changelog.md");
|
|
370918
371025
|
}
|
|
@@ -370923,7 +371030,7 @@ async function migrateChangelogFromConfig() {
|
|
|
370923
371030
|
}
|
|
370924
371031
|
const cachePath = getChangelogCachePath();
|
|
370925
371032
|
try {
|
|
370926
|
-
await mkdir32(
|
|
371033
|
+
await mkdir32(dirname58(cachePath), { recursive: true });
|
|
370927
371034
|
await writeFile37(cachePath, config3.cachedChangelog, {
|
|
370928
371035
|
encoding: "utf-8",
|
|
370929
371036
|
flag: "wx"
|
|
@@ -370945,7 +371052,7 @@ async function fetchAndStoreChangelog() {
|
|
|
370945
371052
|
return;
|
|
370946
371053
|
}
|
|
370947
371054
|
const cachePath = getChangelogCachePath();
|
|
370948
|
-
await mkdir32(
|
|
371055
|
+
await mkdir32(dirname58(cachePath), { recursive: true });
|
|
370949
371056
|
await writeFile37(cachePath, changelogContent, { encoding: "utf-8" });
|
|
370950
371057
|
changelogMemoryCache = changelogContent;
|
|
370951
371058
|
const changelogLastFetched = Date.now();
|
|
@@ -371032,7 +371139,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
371032
371139
|
return [];
|
|
371033
371140
|
}
|
|
371034
371141
|
}
|
|
371035
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.25.
|
|
371142
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.25.3") {
|
|
371036
371143
|
if (process.env.USER_TYPE === "ant") {
|
|
371037
371144
|
const changelog = "";
|
|
371038
371145
|
if (changelog) {
|
|
@@ -371059,7 +371166,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.25.0")
|
|
|
371059
371166
|
releaseNotes
|
|
371060
371167
|
};
|
|
371061
371168
|
}
|
|
371062
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.25.
|
|
371169
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.25.3") {
|
|
371063
371170
|
if (process.env.USER_TYPE === "ant") {
|
|
371064
371171
|
const changelog = "";
|
|
371065
371172
|
if (changelog) {
|
|
@@ -372229,7 +372336,7 @@ function getRecentActivitySync() {
|
|
|
372229
372336
|
return cachedActivity;
|
|
372230
372337
|
}
|
|
372231
372338
|
function getLogoDisplayData() {
|
|
372232
|
-
const version2 = process.env.DEMO_VERSION ?? "1.25.
|
|
372339
|
+
const version2 = process.env.DEMO_VERSION ?? "1.25.3";
|
|
372233
372340
|
const serverUrl = getDirectConnectServerUrl();
|
|
372234
372341
|
const displayPath = process.env.DEMO_VERSION ? "/code/ur" : getDisplayPath(getCwd2());
|
|
372235
372342
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -373018,7 +373125,7 @@ function LogoV2() {
|
|
|
373018
373125
|
if ($3[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
373019
373126
|
t2 = () => {
|
|
373020
373127
|
const currentConfig = getGlobalConfig();
|
|
373021
|
-
if (currentConfig.lastReleaseNotesSeen === "1.25.
|
|
373128
|
+
if (currentConfig.lastReleaseNotesSeen === "1.25.3") {
|
|
373022
373129
|
return;
|
|
373023
373130
|
}
|
|
373024
373131
|
saveGlobalConfig(_temp326);
|
|
@@ -373703,12 +373810,12 @@ function LogoV2() {
|
|
|
373703
373810
|
return t41;
|
|
373704
373811
|
}
|
|
373705
373812
|
function _temp326(current) {
|
|
373706
|
-
if (current.lastReleaseNotesSeen === "1.25.
|
|
373813
|
+
if (current.lastReleaseNotesSeen === "1.25.3") {
|
|
373707
373814
|
return current;
|
|
373708
373815
|
}
|
|
373709
373816
|
return {
|
|
373710
373817
|
...current,
|
|
373711
|
-
lastReleaseNotesSeen: "1.25.
|
|
373818
|
+
lastReleaseNotesSeen: "1.25.3"
|
|
373712
373819
|
};
|
|
373713
373820
|
}
|
|
373714
373821
|
function _temp243(s_0) {
|
|
@@ -387094,7 +387201,7 @@ var init_attackSurface = __esm(() => {
|
|
|
387094
387201
|
|
|
387095
387202
|
// src/security/findings.ts
|
|
387096
387203
|
import * as fs7 from "fs";
|
|
387097
|
-
import { dirname as
|
|
387204
|
+
import { dirname as dirname59, join as join138 } from "path";
|
|
387098
387205
|
function severityRank(s) {
|
|
387099
387206
|
return ORDER.indexOf(s);
|
|
387100
387207
|
}
|
|
@@ -387112,7 +387219,7 @@ class FindingStore {
|
|
|
387112
387219
|
}
|
|
387113
387220
|
}
|
|
387114
387221
|
persist() {
|
|
387115
|
-
fs7.mkdirSync(
|
|
387222
|
+
fs7.mkdirSync(dirname59(this.file), { recursive: true });
|
|
387116
387223
|
fs7.writeFileSync(this.file, JSON.stringify(this.findings, null, 2));
|
|
387117
387224
|
}
|
|
387118
387225
|
add(items) {
|
|
@@ -388708,18 +388815,18 @@ var init_actions2 = __esm(() => {
|
|
|
388708
388815
|
});
|
|
388709
388816
|
|
|
388710
388817
|
// src/services/agents/featureScaffolds.ts
|
|
388711
|
-
import { existsSync as existsSync21, mkdirSync as mkdirSync20, writeFileSync as
|
|
388712
|
-
import { dirname as
|
|
388818
|
+
import { existsSync as existsSync21, mkdirSync as mkdirSync20, writeFileSync as writeFileSync19 } from "fs";
|
|
388819
|
+
import { dirname as dirname60, join as join143 } from "path";
|
|
388713
388820
|
function writeSeedFile(root2, file2, result, force) {
|
|
388714
|
-
const baseRoot = file2.root === "project" ?
|
|
388821
|
+
const baseRoot = file2.root === "project" ? dirname60(root2) : root2;
|
|
388715
388822
|
const fullPath = join143(baseRoot, file2.path);
|
|
388716
388823
|
const displayPath = file2.path;
|
|
388717
|
-
mkdirSync20(
|
|
388824
|
+
mkdirSync20(dirname60(fullPath), { recursive: true });
|
|
388718
388825
|
if (!force && existsSync21(fullPath)) {
|
|
388719
388826
|
result.skipped.push(displayPath);
|
|
388720
388827
|
return;
|
|
388721
388828
|
}
|
|
388722
|
-
|
|
388829
|
+
writeFileSync19(fullPath, file2.content);
|
|
388723
388830
|
result.created.push(displayPath);
|
|
388724
388831
|
}
|
|
388725
388832
|
function renderAgentTemplate(template) {
|
|
@@ -389714,7 +389821,7 @@ import {
|
|
|
389714
389821
|
mkdirSync as mkdirSync21,
|
|
389715
389822
|
readFileSync as readFileSync31,
|
|
389716
389823
|
readdirSync as readdirSync8,
|
|
389717
|
-
writeFileSync as
|
|
389824
|
+
writeFileSync as writeFileSync20
|
|
389718
389825
|
} from "fs";
|
|
389719
389826
|
import { join as join144 } from "path";
|
|
389720
389827
|
function detectPii(text, kinds = "all") {
|
|
@@ -389937,7 +390044,7 @@ function scaffoldGuardrails(cwd2, options2 = {}) {
|
|
|
389937
390044
|
const path22 = join144(dir, "default.json");
|
|
389938
390045
|
if (existsSync22(path22) && options2.force !== true)
|
|
389939
390046
|
return { path: path22, created: false };
|
|
389940
|
-
|
|
390047
|
+
writeFileSync20(path22, `${JSON.stringify(defaultGuardrails(), null, 2)}
|
|
389941
390048
|
`);
|
|
389942
390049
|
return { path: path22, created: true };
|
|
389943
390050
|
}
|
|
@@ -390697,7 +390804,7 @@ function buildToolUseContext(tools, readFileStateCache) {
|
|
|
390697
390804
|
async function handleInitialize() {
|
|
390698
390805
|
return {
|
|
390699
390806
|
name: "ur-agent",
|
|
390700
|
-
version: "1.25.
|
|
390807
|
+
version: "1.25.3",
|
|
390701
390808
|
protocolVersion: "0.1.0"
|
|
390702
390809
|
};
|
|
390703
390810
|
}
|
|
@@ -391110,7 +391217,7 @@ var init_acp2 = __esm(() => {
|
|
|
391110
391217
|
|
|
391111
391218
|
// src/services/agents/scheduler.ts
|
|
391112
391219
|
import { createHash as createHash24 } from "crypto";
|
|
391113
|
-
import { existsSync as existsSync23, mkdirSync as mkdirSync22, unlinkSync as unlinkSync3, writeFileSync as
|
|
391220
|
+
import { existsSync as existsSync23, mkdirSync as mkdirSync22, unlinkSync as unlinkSync3, writeFileSync as writeFileSync21 } from "fs";
|
|
391114
391221
|
import { homedir as homedir28 } from "os";
|
|
391115
391222
|
import { join as join145 } from "path";
|
|
391116
391223
|
function defaultBin() {
|
|
@@ -391141,7 +391248,7 @@ function buildLaunchdPlist(config3) {
|
|
|
391141
391248
|
const label = schedulerLabel(config3.cwd);
|
|
391142
391249
|
const interval = config3.intervalSec ?? 60;
|
|
391143
391250
|
const args = runDueArgs(config3);
|
|
391144
|
-
const programArgs = args.map((arg) => ` <string>${
|
|
391251
|
+
const programArgs = args.map((arg) => ` <string>${escapeXml3(arg)}</string>`).join(`
|
|
391145
391252
|
`);
|
|
391146
391253
|
const logPath = join145(config3.cwd, ".ur", "automations", "scheduler.log");
|
|
391147
391254
|
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
@@ -391155,20 +391262,20 @@ function buildLaunchdPlist(config3) {
|
|
|
391155
391262
|
${programArgs}
|
|
391156
391263
|
</array>
|
|
391157
391264
|
<key>WorkingDirectory</key>
|
|
391158
|
-
<string>${
|
|
391265
|
+
<string>${escapeXml3(config3.cwd)}</string>
|
|
391159
391266
|
<key>StartInterval</key>
|
|
391160
391267
|
<integer>${interval}</integer>
|
|
391161
391268
|
<key>RunAtLoad</key>
|
|
391162
391269
|
<true/>
|
|
391163
391270
|
<key>StandardOutPath</key>
|
|
391164
|
-
<string>${
|
|
391271
|
+
<string>${escapeXml3(logPath)}</string>
|
|
391165
391272
|
<key>StandardErrorPath</key>
|
|
391166
|
-
<string>${
|
|
391273
|
+
<string>${escapeXml3(logPath)}</string>
|
|
391167
391274
|
</dict>
|
|
391168
391275
|
</plist>
|
|
391169
391276
|
`;
|
|
391170
391277
|
}
|
|
391171
|
-
function
|
|
391278
|
+
function escapeXml3(value) {
|
|
391172
391279
|
return value.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">");
|
|
391173
391280
|
}
|
|
391174
391281
|
function systemdUnitDir() {
|
|
@@ -391218,7 +391325,7 @@ function installScheduler(config3, platform5 = detectPlatform()) {
|
|
|
391218
391325
|
if (platform5 === "launchd") {
|
|
391219
391326
|
const path22 = launchdPlistPath(config3.cwd);
|
|
391220
391327
|
mkdirSync22(launchAgentsDir(), { recursive: true });
|
|
391221
|
-
|
|
391328
|
+
writeFileSync21(path22, buildLaunchdPlist(config3));
|
|
391222
391329
|
return {
|
|
391223
391330
|
platform: platform5,
|
|
391224
391331
|
installed: true,
|
|
@@ -391235,8 +391342,8 @@ function installScheduler(config3, platform5 = detectPlatform()) {
|
|
|
391235
391342
|
mkdirSync22(dir, { recursive: true });
|
|
391236
391343
|
const servicePath = join145(dir, systemdServiceName(config3.cwd));
|
|
391237
391344
|
const timerPath = join145(dir, systemdTimerName(config3.cwd));
|
|
391238
|
-
|
|
391239
|
-
|
|
391345
|
+
writeFileSync21(servicePath, buildSystemdService(config3));
|
|
391346
|
+
writeFileSync21(timerPath, buildSystemdTimer(config3));
|
|
391240
391347
|
return {
|
|
391241
391348
|
platform: platform5,
|
|
391242
391349
|
installed: true,
|
|
@@ -391352,7 +391459,7 @@ import {
|
|
|
391352
391459
|
readdirSync as readdirSync9,
|
|
391353
391460
|
readFileSync as readFileSync33,
|
|
391354
391461
|
unlinkSync as unlinkSync4,
|
|
391355
|
-
writeFileSync as
|
|
391462
|
+
writeFileSync as writeFileSync22
|
|
391356
391463
|
} from "fs";
|
|
391357
391464
|
import { join as join146 } from "path";
|
|
391358
391465
|
function automationsDir() {
|
|
@@ -391406,7 +391513,7 @@ function listSpecs() {
|
|
|
391406
391513
|
}
|
|
391407
391514
|
function writeSpec(spec) {
|
|
391408
391515
|
mkdirSync23(automationsDir(), { recursive: true });
|
|
391409
|
-
|
|
391516
|
+
writeFileSync22(automationPath(spec.name), `${JSON.stringify(spec, null, 2)}
|
|
391410
391517
|
`);
|
|
391411
391518
|
}
|
|
391412
391519
|
function toMs(value) {
|
|
@@ -391738,7 +391845,7 @@ __export(exports_exec, {
|
|
|
391738
391845
|
execCommandForPrompt: () => execCommandForPrompt,
|
|
391739
391846
|
call: () => call59
|
|
391740
391847
|
});
|
|
391741
|
-
import { mkdirSync as mkdirSync24, writeFileSync as
|
|
391848
|
+
import { mkdirSync as mkdirSync24, writeFileSync as writeFileSync23 } from "fs";
|
|
391742
391849
|
import { join as join147 } from "path";
|
|
391743
391850
|
function option6(tokens, name) {
|
|
391744
391851
|
const index2 = tokens.indexOf(name);
|
|
@@ -391872,7 +391979,7 @@ async function runExecPool(prompts, opts) {
|
|
|
391872
391979
|
function writeOutputFile(outputDir, prompt, content) {
|
|
391873
391980
|
mkdirSync24(outputDir, { recursive: true });
|
|
391874
391981
|
const slug2 = prompt.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 40) || "task";
|
|
391875
|
-
|
|
391982
|
+
writeFileSync23(join147(outputDir, `${slug2}.txt`), content);
|
|
391876
391983
|
}
|
|
391877
391984
|
var call59 = async (args) => {
|
|
391878
391985
|
const tokens = parseArguments2(args);
|
|
@@ -392051,7 +392158,7 @@ var exports_claim_ledger = {};
|
|
|
392051
392158
|
__export(exports_claim_ledger, {
|
|
392052
392159
|
call: () => call61
|
|
392053
392160
|
});
|
|
392054
|
-
import { existsSync as existsSync26, mkdirSync as mkdirSync25, readFileSync as readFileSync35, writeFileSync as
|
|
392161
|
+
import { existsSync as existsSync26, mkdirSync as mkdirSync25, readFileSync as readFileSync35, writeFileSync as writeFileSync24 } from "fs";
|
|
392055
392162
|
import { join as join149 } from "path";
|
|
392056
392163
|
function ledgerPath2() {
|
|
392057
392164
|
return join149(getCwd2(), ".ur", "evidence", "claims.json");
|
|
@@ -392068,7 +392175,7 @@ function loadLedger() {
|
|
|
392068
392175
|
}
|
|
392069
392176
|
function saveLedger(ledger) {
|
|
392070
392177
|
mkdirSync25(join149(getCwd2(), ".ur", "evidence"), { recursive: true });
|
|
392071
|
-
|
|
392178
|
+
writeFileSync24(ledgerPath2(), `${JSON.stringify(ledger, null, 2)}
|
|
392072
392179
|
`);
|
|
392073
392180
|
}
|
|
392074
392181
|
function parseSource(value) {
|
|
@@ -392160,7 +392267,7 @@ import {
|
|
|
392160
392267
|
mkdirSync as mkdirSync26,
|
|
392161
392268
|
readFileSync as readFileSync36,
|
|
392162
392269
|
readdirSync as readdirSync11,
|
|
392163
|
-
writeFileSync as
|
|
392270
|
+
writeFileSync as writeFileSync25
|
|
392164
392271
|
} from "fs";
|
|
392165
392272
|
import { join as join150 } from "path";
|
|
392166
392273
|
function slugifyWorkflowName(name) {
|
|
@@ -392362,7 +392469,7 @@ function saveWorkflow(cwd2, spec, options2 = {}) {
|
|
|
392362
392469
|
if (existsSync27(path22) && options2.force !== true) {
|
|
392363
392470
|
return { path: path22, created: false };
|
|
392364
392471
|
}
|
|
392365
|
-
|
|
392472
|
+
writeFileSync25(path22, `${import_yaml3.stringify(spec)}`);
|
|
392366
392473
|
return { path: path22, created: true };
|
|
392367
392474
|
}
|
|
392368
392475
|
function loadRunState(cwd2, name) {
|
|
@@ -392386,14 +392493,14 @@ function markStepComplete(cwd2, name, stepId) {
|
|
|
392386
392493
|
state.completed.push(stepId);
|
|
392387
392494
|
state.updatedAt = now7;
|
|
392388
392495
|
mkdirSync26(stateDir(cwd2), { recursive: true });
|
|
392389
|
-
|
|
392496
|
+
writeFileSync25(statePath(cwd2, name), `${JSON.stringify(state, null, 2)}
|
|
392390
392497
|
`);
|
|
392391
392498
|
return state;
|
|
392392
392499
|
}
|
|
392393
392500
|
function resetRunState(cwd2, name) {
|
|
392394
392501
|
const path22 = statePath(cwd2, name);
|
|
392395
392502
|
if (existsSync27(path22)) {
|
|
392396
|
-
|
|
392503
|
+
writeFileSync25(path22, `${JSON.stringify({
|
|
392397
392504
|
version: 1,
|
|
392398
392505
|
name: slugifyWorkflowName(name),
|
|
392399
392506
|
startedAt: new Date().toISOString(),
|
|
@@ -392517,7 +392624,7 @@ var init_workflows = __esm(() => {
|
|
|
392517
392624
|
});
|
|
392518
392625
|
|
|
392519
392626
|
// src/services/agents/patterns.ts
|
|
392520
|
-
import { existsSync as existsSync28, mkdirSync as mkdirSync27, writeFileSync as
|
|
392627
|
+
import { existsSync as existsSync28, mkdirSync as mkdirSync27, writeFileSync as writeFileSync26 } from "fs";
|
|
392521
392628
|
import { join as join151 } from "path";
|
|
392522
392629
|
function listPatterns() {
|
|
392523
392630
|
return AGENT_PATTERNS;
|
|
@@ -392597,7 +392704,7 @@ function scaffoldPattern(cwd2, id, options2 = {}) {
|
|
|
392597
392704
|
if (!force && existsSync28(specPath)) {
|
|
392598
392705
|
result.skipped.push(`patterns/${pattern.id}.json`);
|
|
392599
392706
|
} else {
|
|
392600
|
-
|
|
392707
|
+
writeFileSync26(specPath, `${JSON.stringify(pattern, null, 2)}
|
|
392601
392708
|
`);
|
|
392602
392709
|
result.created.push(`patterns/${pattern.id}.json`);
|
|
392603
392710
|
}
|
|
@@ -393933,7 +394040,7 @@ var init_workflow2 = __esm(() => {
|
|
|
393933
394040
|
});
|
|
393934
394041
|
|
|
393935
394042
|
// src/skills/skillSpec.ts
|
|
393936
|
-
import { existsSync as existsSync29, mkdirSync as mkdirSync28, readFileSync as readFileSync37, readdirSync as readdirSync12, writeFileSync as
|
|
394043
|
+
import { existsSync as existsSync29, mkdirSync as mkdirSync28, readFileSync as readFileSync37, readdirSync as readdirSync12, writeFileSync as writeFileSync27 } from "fs";
|
|
393937
394044
|
import { join as join152 } from "path";
|
|
393938
394045
|
function readTextFile(path22) {
|
|
393939
394046
|
try {
|
|
@@ -394192,16 +394299,16 @@ function initSkillDir(dir, name) {
|
|
|
394192
394299
|
}
|
|
394193
394300
|
]
|
|
394194
394301
|
};
|
|
394195
|
-
|
|
394196
|
-
|
|
394302
|
+
writeFileSync27(join152(dir, SKILL_YAML_FILE), stringifySkillYaml(spec));
|
|
394303
|
+
writeFileSync27(join152(dir, SKILL_INSTRUCTIONS_FILE), `# ${name}
|
|
394197
394304
|
|
|
394198
394305
|
Executable skill for ${name}.
|
|
394199
394306
|
`);
|
|
394200
|
-
|
|
394307
|
+
writeFileSync27(join152(dir, "checklists", "default.md"), `# Default checklist
|
|
394201
394308
|
|
|
394202
394309
|
- [ ] Step completed successfully
|
|
394203
394310
|
`);
|
|
394204
|
-
|
|
394311
|
+
writeFileSync27(join152(dir, "templates", "output.md"), `# Output template
|
|
394205
394312
|
|
|
394206
394313
|
## Summary
|
|
394207
394314
|
|
|
@@ -394947,7 +395054,7 @@ import {
|
|
|
394947
395054
|
readFileSync as readFileSync39,
|
|
394948
395055
|
readdirSync as readdirSync13,
|
|
394949
395056
|
statSync as statSync10,
|
|
394950
|
-
writeFileSync as
|
|
395057
|
+
writeFileSync as writeFileSync28
|
|
394951
395058
|
} from "fs";
|
|
394952
395059
|
import { basename as basename41, join as join154, relative as relative33, resolve as resolve44 } from "path";
|
|
394953
395060
|
function knowledgeDir(cwd2) {
|
|
@@ -394971,7 +395078,7 @@ function loadSources(cwd2) {
|
|
|
394971
395078
|
}
|
|
394972
395079
|
function saveSources(cwd2, sources) {
|
|
394973
395080
|
mkdirSync29(knowledgeDir(cwd2), { recursive: true });
|
|
394974
|
-
|
|
395081
|
+
writeFileSync28(sourcesPath(cwd2), `${JSON.stringify(sources, null, 2)}
|
|
394975
395082
|
`);
|
|
394976
395083
|
}
|
|
394977
395084
|
function makeSourceId(kind, ref) {
|
|
@@ -395145,7 +395252,7 @@ async function buildIndex(cwd2, options2 = {}) {
|
|
|
395145
395252
|
chunks
|
|
395146
395253
|
};
|
|
395147
395254
|
mkdirSync29(join154(knowledgeDir(cwd2), "index"), { recursive: true });
|
|
395148
|
-
|
|
395255
|
+
writeFileSync28(indexPath2(cwd2), `${JSON.stringify(index2, null, 2)}
|
|
395149
395256
|
`);
|
|
395150
395257
|
return index2;
|
|
395151
395258
|
}
|
|
@@ -395194,7 +395301,7 @@ function pruneKnowledge(cwd2, options2) {
|
|
|
395194
395301
|
removedChunks = before - index2.chunks.length;
|
|
395195
395302
|
index2.builtAt = new Date().toISOString();
|
|
395196
395303
|
mkdirSync29(join154(knowledgeDir(cwd2), "index"), { recursive: true });
|
|
395197
|
-
|
|
395304
|
+
writeFileSync28(indexPath2(cwd2), `${JSON.stringify(index2, null, 2)}
|
|
395198
395305
|
`);
|
|
395199
395306
|
}
|
|
395200
395307
|
return { removedSources, removedChunks };
|
|
@@ -395382,7 +395489,7 @@ var init_knowledge3 = __esm(() => {
|
|
|
395382
395489
|
});
|
|
395383
395490
|
|
|
395384
395491
|
// src/services/agents/crew.ts
|
|
395385
|
-
import { existsSync as existsSync32, mkdirSync as mkdirSync30, readdirSync as readdirSync14, readFileSync as readFileSync40, unlinkSync as unlinkSync5, writeFileSync as
|
|
395492
|
+
import { existsSync as existsSync32, mkdirSync as mkdirSync30, readdirSync as readdirSync14, readFileSync as readFileSync40, unlinkSync as unlinkSync5, writeFileSync as writeFileSync29 } from "fs";
|
|
395386
395493
|
import { join as join155 } from "path";
|
|
395387
395494
|
function crewDir(cwd2) {
|
|
395388
395495
|
return join155(cwd2, ".ur", "crew");
|
|
@@ -395411,7 +395518,7 @@ function loadCrew(cwd2, name) {
|
|
|
395411
395518
|
}
|
|
395412
395519
|
function saveCrew(cwd2, spec) {
|
|
395413
395520
|
mkdirSync30(crewDir(cwd2), { recursive: true });
|
|
395414
|
-
|
|
395521
|
+
writeFileSync29(crewPath(cwd2, spec.name), `${JSON.stringify(spec, null, 2)}
|
|
395415
395522
|
`);
|
|
395416
395523
|
}
|
|
395417
395524
|
function deleteCrew(cwd2, name) {
|
|
@@ -395989,7 +396096,7 @@ var init_crew3 = __esm(() => {
|
|
|
395989
396096
|
});
|
|
395990
396097
|
|
|
395991
396098
|
// src/services/agents/goals.ts
|
|
395992
|
-
import { existsSync as existsSync33, mkdirSync as mkdirSync31, readdirSync as readdirSync15, readFileSync as readFileSync41, unlinkSync as unlinkSync6, writeFileSync as
|
|
396099
|
+
import { existsSync as existsSync33, mkdirSync as mkdirSync31, readdirSync as readdirSync15, readFileSync as readFileSync41, unlinkSync as unlinkSync6, writeFileSync as writeFileSync30 } from "fs";
|
|
395993
396100
|
import { join as join156 } from "path";
|
|
395994
396101
|
function goalsDir(cwd2) {
|
|
395995
396102
|
return join156(cwd2, ".ur", "goals");
|
|
@@ -396018,7 +396125,7 @@ function loadGoal(cwd2, name) {
|
|
|
396018
396125
|
}
|
|
396019
396126
|
function saveGoal(cwd2, spec) {
|
|
396020
396127
|
mkdirSync31(goalsDir(cwd2), { recursive: true });
|
|
396021
|
-
|
|
396128
|
+
writeFileSync30(goalPath(cwd2, spec.name), `${JSON.stringify(spec, null, 2)}
|
|
396022
396129
|
`);
|
|
396023
396130
|
}
|
|
396024
396131
|
function createGoal(cwd2, name, objective, options2 = {}) {
|
|
@@ -396746,7 +396853,7 @@ import {
|
|
|
396746
396853
|
readdirSync as readdirSync16,
|
|
396747
396854
|
readFileSync as readFileSync43,
|
|
396748
396855
|
rmSync as rmSync5,
|
|
396749
|
-
writeFileSync as
|
|
396856
|
+
writeFileSync as writeFileSync31
|
|
396750
396857
|
} from "fs";
|
|
396751
396858
|
import { join as join158 } from "path";
|
|
396752
396859
|
function specsDir(cwd2) {
|
|
@@ -396779,7 +396886,7 @@ function loadSpec(cwd2, name) {
|
|
|
396779
396886
|
}
|
|
396780
396887
|
function saveMeta(cwd2, meta) {
|
|
396781
396888
|
mkdirSync32(specDir(cwd2, meta.name), { recursive: true });
|
|
396782
|
-
|
|
396889
|
+
writeFileSync31(metaPath(cwd2, meta.name), `${JSON.stringify(meta, null, 2)}
|
|
396783
396890
|
`);
|
|
396784
396891
|
}
|
|
396785
396892
|
function readPhase(cwd2, name, phase) {
|
|
@@ -396788,7 +396895,7 @@ function readPhase(cwd2, name, phase) {
|
|
|
396788
396895
|
}
|
|
396789
396896
|
function writePhase(cwd2, name, phase, body) {
|
|
396790
396897
|
mkdirSync32(specDir(cwd2, name), { recursive: true });
|
|
396791
|
-
|
|
396898
|
+
writeFileSync31(join158(specDir(cwd2, name), phaseFile(phase)), body.endsWith(`
|
|
396792
396899
|
`) ? body : `${body}
|
|
396793
396900
|
`);
|
|
396794
396901
|
}
|
|
@@ -397045,7 +397152,7 @@ var init_spec = __esm(() => {
|
|
|
397045
397152
|
});
|
|
397046
397153
|
|
|
397047
397154
|
// src/services/agents/specVerifier.ts
|
|
397048
|
-
import { existsSync as existsSync36, mkdirSync as mkdirSync33, readFileSync as readFileSync44, writeFileSync as
|
|
397155
|
+
import { existsSync as existsSync36, mkdirSync as mkdirSync33, readFileSync as readFileSync44, writeFileSync as writeFileSync32 } from "fs";
|
|
397049
397156
|
import { join as join159 } from "path";
|
|
397050
397157
|
function recordPath(cwd2, name) {
|
|
397051
397158
|
return join159(cwd2, ".ur", "specs", name, RECORD_FILE);
|
|
@@ -397072,7 +397179,7 @@ function listVerificationRecords(cwd2, name) {
|
|
|
397072
397179
|
function saveVerificationRecord(cwd2, name, record3) {
|
|
397073
397180
|
const path22 = recordPath(cwd2, name);
|
|
397074
397181
|
mkdirSync33(join159(cwd2, ".ur", "specs", name), { recursive: true });
|
|
397075
|
-
|
|
397182
|
+
writeFileSync32(path22, `${JSON.stringify(record3, null, 2)}
|
|
397076
397183
|
`);
|
|
397077
397184
|
}
|
|
397078
397185
|
function writeVerificationReport(cwd2, name, result) {
|
|
@@ -397098,7 +397205,7 @@ function writeVerificationReport(cwd2, name, result) {
|
|
|
397098
397205
|
"```",
|
|
397099
397206
|
""
|
|
397100
397207
|
];
|
|
397101
|
-
|
|
397208
|
+
writeFileSync32(reportPath(cwd2, name), lines.join(`
|
|
397102
397209
|
`));
|
|
397103
397210
|
}
|
|
397104
397211
|
async function captureDiff(cwd2) {
|
|
@@ -397524,7 +397631,7 @@ var init_spec3 = __esm(() => {
|
|
|
397524
397631
|
});
|
|
397525
397632
|
|
|
397526
397633
|
// src/services/agents/escalation.ts
|
|
397527
|
-
import { existsSync as existsSync37, mkdirSync as mkdirSync34, readFileSync as readFileSync45, writeFileSync as
|
|
397634
|
+
import { existsSync as existsSync37, mkdirSync as mkdirSync34, readFileSync as readFileSync45, writeFileSync as writeFileSync33 } from "fs";
|
|
397528
397635
|
import { join as join160 } from "path";
|
|
397529
397636
|
function scoreOracle(model) {
|
|
397530
397637
|
let score = (model.contextLength ?? 0) / 1000;
|
|
@@ -397706,7 +397813,7 @@ function loadPolicy(cwd2) {
|
|
|
397706
397813
|
}
|
|
397707
397814
|
function savePolicy(cwd2, policy) {
|
|
397708
397815
|
mkdirSync34(join160(cwd2, ".ur"), { recursive: true });
|
|
397709
|
-
|
|
397816
|
+
writeFileSync33(policyPath(cwd2), `${JSON.stringify(policy, null, 2)}
|
|
397710
397817
|
`);
|
|
397711
397818
|
}
|
|
397712
397819
|
function formatPlan(plan, json2) {
|
|
@@ -397758,7 +397865,7 @@ import {
|
|
|
397758
397865
|
mkdirSync as mkdirSync35,
|
|
397759
397866
|
readFileSync as readFileSync46,
|
|
397760
397867
|
rmSync as rmSync6,
|
|
397761
|
-
writeFileSync as
|
|
397868
|
+
writeFileSync as writeFileSync34
|
|
397762
397869
|
} from "fs";
|
|
397763
397870
|
import { join as join161 } from "path";
|
|
397764
397871
|
function artifactsDir(cwd2) {
|
|
@@ -397776,7 +397883,7 @@ function loadManifest3(cwd2) {
|
|
|
397776
397883
|
}
|
|
397777
397884
|
function saveManifest3(cwd2, manifest) {
|
|
397778
397885
|
mkdirSync35(artifactsDir(cwd2), { recursive: true });
|
|
397779
|
-
|
|
397886
|
+
writeFileSync34(manifestPath4(cwd2), `${JSON.stringify(manifest, null, 2)}
|
|
397780
397887
|
`);
|
|
397781
397888
|
}
|
|
397782
397889
|
function nextId2(manifest) {
|
|
@@ -397795,7 +397902,7 @@ function recordArtifact(cwd2, input) {
|
|
|
397795
397902
|
const dir = join161(artifactsDir(cwd2), "files");
|
|
397796
397903
|
mkdirSync35(dir, { recursive: true });
|
|
397797
397904
|
const rel = join161("files", `${id}-${slug2(input.title)}.${EXT[input.kind]}`);
|
|
397798
|
-
|
|
397905
|
+
writeFileSync34(join161(artifactsDir(cwd2), rel), input.body);
|
|
397799
397906
|
file2 = rel;
|
|
397800
397907
|
}
|
|
397801
397908
|
const artifact = {
|
|
@@ -397944,7 +398051,7 @@ var init_artifacts = __esm(() => {
|
|
|
397944
398051
|
});
|
|
397945
398052
|
|
|
397946
398053
|
// src/services/agents/learning.ts
|
|
397947
|
-
import { existsSync as existsSync39, mkdirSync as mkdirSync36, readFileSync as readFileSync47, writeFileSync as
|
|
398054
|
+
import { existsSync as existsSync39, mkdirSync as mkdirSync36, readFileSync as readFileSync47, writeFileSync as writeFileSync35 } from "fs";
|
|
397948
398055
|
import { join as join162 } from "path";
|
|
397949
398056
|
function emptyStats() {
|
|
397950
398057
|
return {
|
|
@@ -398070,7 +398177,7 @@ function loadStats(cwd2) {
|
|
|
398070
398177
|
}
|
|
398071
398178
|
function saveStats(cwd2, stats) {
|
|
398072
398179
|
mkdirSync36(learningDir(cwd2), { recursive: true });
|
|
398073
|
-
|
|
398180
|
+
writeFileSync35(statsPath(cwd2), `${JSON.stringify(stats, null, 2)}
|
|
398074
398181
|
`);
|
|
398075
398182
|
}
|
|
398076
398183
|
async function reflectOnFailures(input) {
|
|
@@ -398505,7 +398612,7 @@ var init_guardrails3 = __esm(() => {
|
|
|
398505
398612
|
});
|
|
398506
398613
|
|
|
398507
398614
|
// src/services/agents/execTarget.ts
|
|
398508
|
-
import { existsSync as existsSync41, mkdirSync as mkdirSync37, readFileSync as readFileSync49, writeFileSync as
|
|
398615
|
+
import { existsSync as existsSync41, mkdirSync as mkdirSync37, readFileSync as readFileSync49, writeFileSync as writeFileSync36 } from "fs";
|
|
398509
398616
|
import { join as join163 } from "path";
|
|
398510
398617
|
function isContainerized(config3) {
|
|
398511
398618
|
return config3.kind !== "local";
|
|
@@ -398576,7 +398683,7 @@ function scaffoldExecTarget(cwd2, options2 = {}) {
|
|
|
398576
398683
|
mkdirSync37(join163(cwd2, ".ur"), { recursive: true });
|
|
398577
398684
|
if (existsSync41(path22) && options2.force !== true)
|
|
398578
398685
|
return { path: path22, created: false };
|
|
398579
|
-
|
|
398686
|
+
writeFileSync36(path22, `${JSON.stringify(defaultExecTargetConfig(options2.image), null, 2)}
|
|
398580
398687
|
`);
|
|
398581
398688
|
return { path: path22, created: true };
|
|
398582
398689
|
}
|
|
@@ -398706,7 +398813,7 @@ import {
|
|
|
398706
398813
|
existsSync as existsSync42,
|
|
398707
398814
|
mkdirSync as mkdirSync38,
|
|
398708
398815
|
rmSync as rmSync7,
|
|
398709
|
-
writeFileSync as
|
|
398816
|
+
writeFileSync as writeFileSync37
|
|
398710
398817
|
} from "fs";
|
|
398711
398818
|
import { join as join164 } from "path";
|
|
398712
398819
|
function countChangedLines(diff3) {
|
|
@@ -398840,7 +398947,7 @@ Implement this fully and correctly. Make focused changes. End your reply with VE
|
|
|
398840
398947
|
if (options2.apply && winner && winner.diff.trim() && !options2.dryRun) {
|
|
398841
398948
|
const patch = join164(cwd2, ".ur", "arena", `${runId}-winner.patch`);
|
|
398842
398949
|
mkdirSync38(join164(cwd2, ".ur", "arena"), { recursive: true });
|
|
398843
|
-
|
|
398950
|
+
writeFileSync37(patch, winner.diff);
|
|
398844
398951
|
const result = await git4(cwd2, ["apply", "--3way", patch]);
|
|
398845
398952
|
applied = result.code === 0;
|
|
398846
398953
|
if (applied)
|
|
@@ -399473,9 +399580,9 @@ var init_ci_loop2 = __esm(() => {
|
|
|
399473
399580
|
import {
|
|
399474
399581
|
mkdirSync as mkdirSync39,
|
|
399475
399582
|
readFileSync as readFileSync51,
|
|
399476
|
-
writeFileSync as
|
|
399583
|
+
writeFileSync as writeFileSync38
|
|
399477
399584
|
} from "fs";
|
|
399478
|
-
import { dirname as
|
|
399585
|
+
import { dirname as dirname61, join as join165, relative as relative34 } from "path";
|
|
399479
399586
|
function defaultTraceDir(cwd2) {
|
|
399480
399587
|
return join165(cwd2, ".ur", "test-first", "traces");
|
|
399481
399588
|
}
|
|
@@ -399504,7 +399611,7 @@ function writeFailureTrace(cwd2, traceDir, run, result, now7) {
|
|
|
399504
399611
|
""
|
|
399505
399612
|
].join(`
|
|
399506
399613
|
`);
|
|
399507
|
-
|
|
399614
|
+
writeFileSync38(file2, body);
|
|
399508
399615
|
return relative34(cwd2, file2);
|
|
399509
399616
|
}
|
|
399510
399617
|
function readExistingVerifyConfig(path22) {
|
|
@@ -399528,7 +399635,7 @@ function mergeStringArray(existing2, additions) {
|
|
|
399528
399635
|
}
|
|
399529
399636
|
function installTestFirstGates(cwd2, stack = detectTestFirstStack(cwd2)) {
|
|
399530
399637
|
const path22 = join165(cwd2, ".ur", "verify.json");
|
|
399531
|
-
mkdirSync39(
|
|
399638
|
+
mkdirSync39(dirname61(path22), { recursive: true });
|
|
399532
399639
|
const commands = stack.commands.map((command5) => command5.command);
|
|
399533
399640
|
const existing2 = readExistingVerifyConfig(path22);
|
|
399534
399641
|
const next = {
|
|
@@ -399536,7 +399643,7 @@ function installTestFirstGates(cwd2, stack = detectTestFirstStack(cwd2)) {
|
|
|
399536
399643
|
afterEdit: mergeStringArray(existing2.afterEdit, commands),
|
|
399537
399644
|
timeoutMs: typeof existing2.timeoutMs === "number" && existing2.timeoutMs > 0 ? existing2.timeoutMs : 600000
|
|
399538
399645
|
};
|
|
399539
|
-
|
|
399646
|
+
writeFileSync38(path22, `${JSON.stringify(next, null, 2)}
|
|
399540
399647
|
`);
|
|
399541
399648
|
return { path: relative34(cwd2, path22), commands };
|
|
399542
399649
|
}
|
|
@@ -400648,7 +400755,7 @@ var exports_sdk = {};
|
|
|
400648
400755
|
__export(exports_sdk, {
|
|
400649
400756
|
call: () => call85
|
|
400650
400757
|
});
|
|
400651
|
-
import { existsSync as existsSync45, mkdirSync as mkdirSync40, writeFileSync as
|
|
400758
|
+
import { existsSync as existsSync45, mkdirSync as mkdirSync40, writeFileSync as writeFileSync39 } from "fs";
|
|
400652
400759
|
import { join as join166 } from "path";
|
|
400653
400760
|
function infoText() {
|
|
400654
400761
|
return [
|
|
@@ -400744,7 +400851,7 @@ A2A server: \`ur a2a serve\`.
|
|
|
400744
400851
|
skipped.push(name);
|
|
400745
400852
|
continue;
|
|
400746
400853
|
}
|
|
400747
|
-
|
|
400854
|
+
writeFileSync39(path22, content);
|
|
400748
400855
|
created.push(name);
|
|
400749
400856
|
}
|
|
400750
400857
|
return {
|
|
@@ -400821,7 +400928,7 @@ import {
|
|
|
400821
400928
|
readFileSync as readFileSync53,
|
|
400822
400929
|
readdirSync as readdirSync17,
|
|
400823
400930
|
rmSync as rmSync8,
|
|
400824
|
-
writeFileSync as
|
|
400931
|
+
writeFileSync as writeFileSync40
|
|
400825
400932
|
} from "fs";
|
|
400826
400933
|
import { join as join167 } from "path";
|
|
400827
400934
|
function hasAnyExpectation(expect) {
|
|
@@ -401510,7 +401617,7 @@ function loadAllReliability(cwd2) {
|
|
|
401510
401617
|
function saveReliabilityReport(cwd2, report) {
|
|
401511
401618
|
mkdirSync41(resultsDir(cwd2), { recursive: true });
|
|
401512
401619
|
const path22 = join167(resultsDir(cwd2), `reliability-${suiteSlug(report.name)}.json`);
|
|
401513
|
-
|
|
401620
|
+
writeFileSync40(path22, `${JSON.stringify(report, null, 2)}
|
|
401514
401621
|
`);
|
|
401515
401622
|
return path22;
|
|
401516
401623
|
}
|
|
@@ -401518,7 +401625,7 @@ function writeDashboard(cwd2) {
|
|
|
401518
401625
|
const html3 = buildDashboardHtml(loadAllReports(cwd2), loadAllReliability(cwd2));
|
|
401519
401626
|
mkdirSync41(evalsDir(cwd2), { recursive: true });
|
|
401520
401627
|
const path22 = join167(evalsDir(cwd2), "dashboard.html");
|
|
401521
|
-
|
|
401628
|
+
writeFileSync40(path22, html3);
|
|
401522
401629
|
return path22;
|
|
401523
401630
|
}
|
|
401524
401631
|
function buildLeaderboard(cwd2, reports, options2 = {}) {
|
|
@@ -401529,7 +401636,7 @@ function buildLeaderboard(cwd2, reports, options2 = {}) {
|
|
|
401529
401636
|
const dir2 = resultsDir(cwd2);
|
|
401530
401637
|
mkdirSync41(dir2, { recursive: true });
|
|
401531
401638
|
const path23 = join167(dir2, "leaderboard.json");
|
|
401532
|
-
|
|
401639
|
+
writeFileSync40(path23, JSON.stringify({ title, generatedAt: new Date().toISOString(), reports }, null, 2) + `
|
|
401533
401640
|
`);
|
|
401534
401641
|
if (runId) {
|
|
401535
401642
|
addRunArtifact(cwd2, runId, { kind: "leaderboard", path: path23, title });
|
|
@@ -401540,7 +401647,7 @@ function buildLeaderboard(cwd2, reports, options2 = {}) {
|
|
|
401540
401647
|
const dir2 = resultsDir(cwd2);
|
|
401541
401648
|
mkdirSync41(dir2, { recursive: true });
|
|
401542
401649
|
const path23 = join167(dir2, "leaderboard.md");
|
|
401543
|
-
|
|
401650
|
+
writeFileSync40(path23, formatLeaderboardMarkdown(title, reports));
|
|
401544
401651
|
if (runId) {
|
|
401545
401652
|
addRunArtifact(cwd2, runId, { kind: "leaderboard", path: path23, title });
|
|
401546
401653
|
}
|
|
@@ -401550,7 +401657,7 @@ function buildLeaderboard(cwd2, reports, options2 = {}) {
|
|
|
401550
401657
|
mkdirSync41(dir, { recursive: true });
|
|
401551
401658
|
const path22 = join167(dir, "leaderboard.html");
|
|
401552
401659
|
const html3 = buildDashboardHtml(reports, []);
|
|
401553
|
-
|
|
401660
|
+
writeFileSync40(path22, html3.replace("<title>UR Eval Dashboard</title>", `<title>${escapeHtml(title)}</title>`).replace("<h1>UR Eval Dashboard</h1>", `<h1>${escapeHtml(title)}</h1>`));
|
|
401554
401661
|
if (runId) {
|
|
401555
401662
|
addRunArtifact(cwd2, runId, { kind: "leaderboard", path: path22, title });
|
|
401556
401663
|
}
|
|
@@ -401578,7 +401685,7 @@ function writeRunMetrics(cwd2, suiteName, caseId, metrics) {
|
|
|
401578
401685
|
const dir = runsDir(cwd2, suiteName);
|
|
401579
401686
|
mkdirSync41(dir, { recursive: true });
|
|
401580
401687
|
const path22 = join167(dir, `${caseId}.json`);
|
|
401581
|
-
|
|
401688
|
+
writeFileSync40(path22, `${JSON.stringify(metrics, null, 2)}
|
|
401582
401689
|
`);
|
|
401583
401690
|
return path22;
|
|
401584
401691
|
}
|
|
@@ -401662,7 +401769,7 @@ function saveSuite(cwd2, suite, options2 = {}) {
|
|
|
401662
401769
|
if (existsSync46(path22) && options2.force !== true) {
|
|
401663
401770
|
return { path: path22, created: false };
|
|
401664
401771
|
}
|
|
401665
|
-
|
|
401772
|
+
writeFileSync40(path22, `${JSON.stringify(suite, null, 2)}
|
|
401666
401773
|
`);
|
|
401667
401774
|
return { path: path22, created: true };
|
|
401668
401775
|
}
|
|
@@ -401820,7 +401927,7 @@ function importBenchmarkSuite(cwd2, adapter2, file2, options2 = {}) {
|
|
|
401820
401927
|
function saveReport(cwd2, report, options2 = {}) {
|
|
401821
401928
|
mkdirSync41(resultsDir(cwd2), { recursive: true });
|
|
401822
401929
|
const path22 = join167(resultsDir(cwd2), `${suiteSlug(report.name)}.json`);
|
|
401823
|
-
|
|
401930
|
+
writeFileSync40(path22, `${JSON.stringify(report, null, 2)}
|
|
401824
401931
|
`);
|
|
401825
401932
|
if (options2.runId) {
|
|
401826
401933
|
addRunArtifact(cwd2, options2.runId, {
|
|
@@ -401891,7 +401998,7 @@ function scaffoldEvals(cwd2, options2 = {}) {
|
|
|
401891
401998
|
if (existsSync46(readmePath) && options2.force !== true) {
|
|
401892
401999
|
result.skipped.push("evals/README.md");
|
|
401893
402000
|
} else {
|
|
401894
|
-
|
|
402001
|
+
writeFileSync40(readmePath, EVALS_README);
|
|
401895
402002
|
result.created.push("evals/README.md");
|
|
401896
402003
|
}
|
|
401897
402004
|
const saved = saveSuite(cwd2, defaultEvalSuite(), { force: options2.force });
|
|
@@ -402260,7 +402367,7 @@ var exports_eval = {};
|
|
|
402260
402367
|
__export(exports_eval, {
|
|
402261
402368
|
call: () => call86
|
|
402262
402369
|
});
|
|
402263
|
-
import { mkdirSync as mkdirSync42, writeFileSync as
|
|
402370
|
+
import { mkdirSync as mkdirSync42, writeFileSync as writeFileSync41 } from "fs";
|
|
402264
402371
|
import { join as join169 } from "path";
|
|
402265
402372
|
function optionValue7(tokens, flag) {
|
|
402266
402373
|
const index2 = tokens.indexOf(flag);
|
|
@@ -402392,7 +402499,7 @@ Run: ur eval run ${suite2.name}`
|
|
|
402392
402499
|
const dir = join169(evalsDir(cwd2), ".dashboards");
|
|
402393
402500
|
mkdirSync42(dir, { recursive: true });
|
|
402394
402501
|
const path22 = join169(dir, `${suiteSlug(report.name)}.html`);
|
|
402395
|
-
|
|
402502
|
+
writeFileSync41(path22, html3);
|
|
402396
402503
|
return { type: "text", value: `Wrote single-suite dashboard to ${path22}` };
|
|
402397
402504
|
}
|
|
402398
402505
|
return { type: "text", value: formatEvalReport(report, json2) };
|
|
@@ -403194,8 +403301,8 @@ var init_project2 = __esm(() => {
|
|
|
403194
403301
|
});
|
|
403195
403302
|
|
|
403196
403303
|
// src/ur/notes.ts
|
|
403197
|
-
import { appendFileSync as appendFileSync5, existsSync as existsSync49, mkdirSync as mkdirSync43, readFileSync as readFileSync55, writeFileSync as
|
|
403198
|
-
import { dirname as
|
|
403304
|
+
import { appendFileSync as appendFileSync5, existsSync as existsSync49, mkdirSync as mkdirSync43, readFileSync as readFileSync55, writeFileSync as writeFileSync42 } from "fs";
|
|
403305
|
+
import { dirname as dirname62, join as join171 } from "path";
|
|
403199
403306
|
function readJsonl(file2) {
|
|
403200
403307
|
if (!existsSync49(file2))
|
|
403201
403308
|
return [];
|
|
@@ -403210,7 +403317,7 @@ function readJsonl(file2) {
|
|
|
403210
403317
|
}
|
|
403211
403318
|
function append2(file2, rec) {
|
|
403212
403319
|
try {
|
|
403213
|
-
mkdirSync43(
|
|
403320
|
+
mkdirSync43(dirname62(file2), { recursive: true });
|
|
403214
403321
|
appendFileSync5(file2, JSON.stringify(rec) + `
|
|
403215
403322
|
`);
|
|
403216
403323
|
} catch {}
|
|
@@ -403228,8 +403335,8 @@ function forget(cwd2, needle) {
|
|
|
403228
403335
|
const removed = all4.length - kept.length;
|
|
403229
403336
|
if (removed > 0) {
|
|
403230
403337
|
try {
|
|
403231
|
-
mkdirSync43(
|
|
403232
|
-
|
|
403338
|
+
mkdirSync43(dirname62(file2), { recursive: true });
|
|
403339
|
+
writeFileSync42(file2, kept.map((n2) => JSON.stringify(n2)).join(`
|
|
403233
403340
|
`) + (kept.length ? `
|
|
403234
403341
|
` : ""));
|
|
403235
403342
|
} catch {}
|
|
@@ -403285,9 +403392,9 @@ import {
|
|
|
403285
403392
|
mkdirSync as mkdirSync44,
|
|
403286
403393
|
readFileSync as readFileSync56,
|
|
403287
403394
|
readdirSync as readdirSync19,
|
|
403288
|
-
writeFileSync as
|
|
403395
|
+
writeFileSync as writeFileSync43
|
|
403289
403396
|
} from "fs";
|
|
403290
|
-
import { dirname as
|
|
403397
|
+
import { dirname as dirname63, join as join172 } from "path";
|
|
403291
403398
|
function memoryDir(cwd2) {
|
|
403292
403399
|
return join172(cwd2, ".ur", "memory");
|
|
403293
403400
|
}
|
|
@@ -403322,8 +403429,8 @@ function saveMemoryRetentionPolicy(cwd2, patch) {
|
|
|
403322
403429
|
decayDays: patch.decayDays === undefined ? current.decayDays : validPositive(patch.decayDays),
|
|
403323
403430
|
updatedAt: new Date().toISOString()
|
|
403324
403431
|
};
|
|
403325
|
-
mkdirSync44(
|
|
403326
|
-
|
|
403432
|
+
mkdirSync44(dirname63(policyPath2(cwd2)), { recursive: true });
|
|
403433
|
+
writeFileSync43(policyPath2(cwd2), `${JSON.stringify(next, null, 2)}
|
|
403327
403434
|
`);
|
|
403328
403435
|
return next;
|
|
403329
403436
|
}
|
|
@@ -403353,7 +403460,7 @@ function readJsonl2(file2) {
|
|
|
403353
403460
|
return records;
|
|
403354
403461
|
}
|
|
403355
403462
|
function writeJsonl(file2, records) {
|
|
403356
|
-
|
|
403463
|
+
writeFileSync43(file2, records.map((r) => JSON.stringify(r)).join(`
|
|
403357
403464
|
`) + (records.length ? `
|
|
403358
403465
|
` : ""));
|
|
403359
403466
|
}
|
|
@@ -403504,7 +403611,7 @@ var exports_semantic_memory = {};
|
|
|
403504
403611
|
__export(exports_semantic_memory, {
|
|
403505
403612
|
call: () => call94
|
|
403506
403613
|
});
|
|
403507
|
-
import { existsSync as existsSync51, mkdirSync as mkdirSync45, readdirSync as readdirSync20, readFileSync as readFileSync57, statSync as statSync11, writeFileSync as
|
|
403614
|
+
import { existsSync as existsSync51, mkdirSync as mkdirSync45, readdirSync as readdirSync20, readFileSync as readFileSync57, statSync as statSync11, writeFileSync as writeFileSync44 } from "fs";
|
|
403508
403615
|
import { basename as basename42, join as join173 } from "path";
|
|
403509
403616
|
function indexPath3() {
|
|
403510
403617
|
return join173(getCwd2(), ".ur", "semantic-memory", "index", "index.json");
|
|
@@ -403549,7 +403656,7 @@ function buildIndex2() {
|
|
|
403549
403656
|
entries
|
|
403550
403657
|
};
|
|
403551
403658
|
mkdirSync45(join173(getCwd2(), ".ur", "semantic-memory", "index"), { recursive: true });
|
|
403552
|
-
|
|
403659
|
+
writeFileSync44(indexPath3(), `${JSON.stringify(index2, null, 2)}
|
|
403553
403660
|
`);
|
|
403554
403661
|
return index2;
|
|
403555
403662
|
}
|
|
@@ -572898,9 +573005,9 @@ import {
|
|
|
572898
573005
|
readFileSync as readFileSync58,
|
|
572899
573006
|
readdirSync as readdirSync21,
|
|
572900
573007
|
statSync as statSync12,
|
|
572901
|
-
writeFileSync as
|
|
573008
|
+
writeFileSync as writeFileSync45
|
|
572902
573009
|
} from "fs";
|
|
572903
|
-
import { dirname as
|
|
573010
|
+
import { dirname as dirname64, extname as extname17, isAbsolute as isAbsolute27, join as join174, relative as relative36, resolve as resolve45 } from "path";
|
|
572904
573011
|
import { promisify as promisify4 } from "util";
|
|
572905
573012
|
function repoEditIndexPath(root2) {
|
|
572906
573013
|
return join174(root2, ".ur", "repo-edit", "index.json");
|
|
@@ -573040,8 +573147,8 @@ ${content}`),
|
|
|
573040
573147
|
builtAt: new Date().toISOString(),
|
|
573041
573148
|
files
|
|
573042
573149
|
};
|
|
573043
|
-
mkdirSync46(
|
|
573044
|
-
|
|
573150
|
+
mkdirSync46(dirname64(repoEditIndexPath(root2)), { recursive: true });
|
|
573151
|
+
writeFileSync45(repoEditIndexPath(root2), `${JSON.stringify(index2, null, 2)}
|
|
573045
573152
|
`);
|
|
573046
573153
|
return index2;
|
|
573047
573154
|
}
|
|
@@ -573189,7 +573296,7 @@ async function runCheck(command5, cwd2) {
|
|
|
573189
573296
|
}
|
|
573190
573297
|
function rollback(root2, snapshots) {
|
|
573191
573298
|
for (const [file2, content] of snapshots) {
|
|
573192
|
-
|
|
573299
|
+
writeFileSync45(join174(root2, file2), content);
|
|
573193
573300
|
}
|
|
573194
573301
|
}
|
|
573195
573302
|
async function applyRename(root2, from, to, options2 = {}) {
|
|
@@ -573202,7 +573309,7 @@ async function applyRename(root2, from, to, options2 = {}) {
|
|
|
573202
573309
|
try {
|
|
573203
573310
|
for (const file2 of plan.files) {
|
|
573204
573311
|
snapshots.set(file2.file, file2.oldContent);
|
|
573205
|
-
|
|
573312
|
+
writeFileSync45(join174(root2, file2.file), file2.newContent);
|
|
573206
573313
|
writtenFiles.push(file2.file);
|
|
573207
573314
|
}
|
|
573208
573315
|
const syntax = plan.files.flatMap((file2) => syntaxErrors(file2.file, file2.newContent));
|
|
@@ -573717,8 +573824,8 @@ var init_diagnostics = __esm(() => {
|
|
|
573717
573824
|
});
|
|
573718
573825
|
|
|
573719
573826
|
// src/services/repoEditing/ast/workspaceEdit.ts
|
|
573720
|
-
import { dirname as
|
|
573721
|
-
import { existsSync as existsSync53, mkdirSync as mkdirSync47, readFileSync as readFileSync59, writeFileSync as
|
|
573827
|
+
import { dirname as dirname65, join as join176 } from "path";
|
|
573828
|
+
import { existsSync as existsSync53, mkdirSync as mkdirSync47, readFileSync as readFileSync59, writeFileSync as writeFileSync46 } from "fs";
|
|
573722
573829
|
function groupByFile2(edits) {
|
|
573723
573830
|
const groups = new Map;
|
|
573724
573831
|
for (const edit2 of edits) {
|
|
@@ -573757,16 +573864,16 @@ function applyWorkspaceEdit(root2, edit2) {
|
|
|
573757
573864
|
const newContent = applyFileEdits(oldContent, edits);
|
|
573758
573865
|
snapshots.set(file2, oldContent);
|
|
573759
573866
|
if (!existsSync53(abs)) {
|
|
573760
|
-
mkdirSync47(
|
|
573867
|
+
mkdirSync47(dirname65(abs), { recursive: true });
|
|
573761
573868
|
}
|
|
573762
|
-
|
|
573869
|
+
writeFileSync46(abs, newContent);
|
|
573763
573870
|
writtenFiles.push(file2);
|
|
573764
573871
|
}
|
|
573765
573872
|
return { writtenFiles, snapshots };
|
|
573766
573873
|
}
|
|
573767
573874
|
function rollbackWorkspaceEdit(root2, snapshots) {
|
|
573768
573875
|
for (const [file2, content] of snapshots) {
|
|
573769
|
-
|
|
573876
|
+
writeFileSync46(join176(root2, file2), content);
|
|
573770
573877
|
}
|
|
573771
573878
|
}
|
|
573772
573879
|
function formatWorkspaceEditAsPatch(root2, edit2) {
|
|
@@ -573912,7 +574019,7 @@ var init_lspEditEngine = __esm(() => {
|
|
|
573912
574019
|
});
|
|
573913
574020
|
|
|
573914
574021
|
// src/services/repoEditing/ast/typescriptEngine.ts
|
|
573915
|
-
import { dirname as
|
|
574022
|
+
import { dirname as dirname66, join as join177, relative as relative37 } from "path";
|
|
573916
574023
|
function loadProgram(root2, files) {
|
|
573917
574024
|
const configPath2 = import_typescript3.default.findConfigFile(root2, import_typescript3.default.sys.fileExists, "tsconfig.json");
|
|
573918
574025
|
let program;
|
|
@@ -574160,11 +574267,11 @@ function normalizePath2(value) {
|
|
|
574160
574267
|
function resolveRelativeImport(importingFileRel, specifier) {
|
|
574161
574268
|
if (!specifier.startsWith("."))
|
|
574162
574269
|
return;
|
|
574163
|
-
const base2 = normalizePath2(join177(
|
|
574270
|
+
const base2 = normalizePath2(join177(dirname66(importingFileRel), specifier));
|
|
574164
574271
|
return stripKnownExtension(base2);
|
|
574165
574272
|
}
|
|
574166
574273
|
function moduleSpecifierBetween(importingFileRel, targetFileRel) {
|
|
574167
|
-
let specifier = normalizePath2(relative37(
|
|
574274
|
+
let specifier = normalizePath2(relative37(dirname66(importingFileRel), stripKnownExtension(targetFileRel)));
|
|
574168
574275
|
if (!specifier.startsWith("."))
|
|
574169
574276
|
specifier = `./${specifier}`;
|
|
574170
574277
|
return specifier;
|
|
@@ -575135,7 +575242,7 @@ var init_cite2 = __esm(() => {
|
|
|
575135
575242
|
});
|
|
575136
575243
|
|
|
575137
575244
|
// src/ur/fileops.ts
|
|
575138
|
-
import { existsSync as existsSync54, mkdirSync as mkdirSync48, readdirSync as readdirSync22, readFileSync as readFileSync62, statSync as statSync13, writeFileSync as
|
|
575245
|
+
import { existsSync as existsSync54, mkdirSync as mkdirSync48, readdirSync as readdirSync22, readFileSync as readFileSync62, statSync as statSync13, writeFileSync as writeFileSync47 } from "fs";
|
|
575139
575246
|
import { extname as extname19, isAbsolute as isAbsolute28, join as join178, relative as relative38, resolve as resolve46 } from "path";
|
|
575140
575247
|
function readFileSafe2(cwd2, target, maxBytes = 64000) {
|
|
575141
575248
|
const abs = isAbsolute28(target) ? target : resolve46(cwd2, target);
|
|
@@ -575208,7 +575315,7 @@ function indexWorkspace(cwd2) {
|
|
|
575208
575315
|
const files = [...walk(cwd2, cwd2)];
|
|
575209
575316
|
try {
|
|
575210
575317
|
mkdirSync48(join178(cwd2, ".ur", "index"), { recursive: true });
|
|
575211
|
-
|
|
575318
|
+
writeFileSync47(join178(cwd2, ".ur", "index", "files.txt"), files.join(`
|
|
575212
575319
|
`) + `
|
|
575213
575320
|
`);
|
|
575214
575321
|
} catch {}
|
|
@@ -575633,7 +575740,7 @@ var exports_mode = {};
|
|
|
575633
575740
|
__export(exports_mode, {
|
|
575634
575741
|
call: () => call110
|
|
575635
575742
|
});
|
|
575636
|
-
import { existsSync as existsSync57, mkdirSync as mkdirSync49, readFileSync as readFileSync63, writeFileSync as
|
|
575743
|
+
import { existsSync as existsSync57, mkdirSync as mkdirSync49, readFileSync as readFileSync63, writeFileSync as writeFileSync48 } from "fs";
|
|
575637
575744
|
import { join as join179 } from "path";
|
|
575638
575745
|
var MODES, SECURITY_MODES2, file2 = (cwd2) => join179(cwd2, ".ur", "mode"), call110 = async (args) => {
|
|
575639
575746
|
const want = (args ?? "").trim().toLowerCase();
|
|
@@ -575654,7 +575761,7 @@ security: ${SECURITY_MODES2.join(", ")}` };
|
|
|
575654
575761
|
}
|
|
575655
575762
|
try {
|
|
575656
575763
|
mkdirSync49(join179(getCwd2(), ".ur"), { recursive: true });
|
|
575657
|
-
|
|
575764
|
+
writeFileSync48(f, want + `
|
|
575658
575765
|
`);
|
|
575659
575766
|
} catch {}
|
|
575660
575767
|
return { type: "text", value: `mode \u2192 ${want} (UR will favor ${want}-oriented behavior; persisted to .ur/mode)` };
|
|
@@ -575776,7 +575883,7 @@ var exports_role_mode = {};
|
|
|
575776
575883
|
__export(exports_role_mode, {
|
|
575777
575884
|
call: () => call111
|
|
575778
575885
|
});
|
|
575779
|
-
import { existsSync as existsSync58, mkdirSync as mkdirSync50, writeFileSync as
|
|
575886
|
+
import { existsSync as existsSync58, mkdirSync as mkdirSync50, writeFileSync as writeFileSync49 } from "fs";
|
|
575780
575887
|
import { join as join180 } from "path";
|
|
575781
575888
|
function formatList() {
|
|
575782
575889
|
const lines = ["Built-in role modes:", ""];
|
|
@@ -575841,7 +575948,7 @@ var call111 = async (args) => {
|
|
|
575841
575948
|
skipped.push(`${mode2.name} (exists; use --force to overwrite)`);
|
|
575842
575949
|
continue;
|
|
575843
575950
|
}
|
|
575844
|
-
|
|
575951
|
+
writeFileSync49(path22, renderModeAgent(mode2), { encoding: "utf-8" });
|
|
575845
575952
|
created.push(path22);
|
|
575846
575953
|
}
|
|
575847
575954
|
if (json2) {
|
|
@@ -575888,14 +575995,14 @@ var init_role_mode2 = __esm(() => {
|
|
|
575888
575995
|
|
|
575889
575996
|
// src/ur/researchGraph.ts
|
|
575890
575997
|
import { appendFileSync as appendFileSync6, existsSync as existsSync59, mkdirSync as mkdirSync51, readFileSync as readFileSync64 } from "fs";
|
|
575891
|
-
import { dirname as
|
|
575998
|
+
import { dirname as dirname67, join as join181 } from "path";
|
|
575892
575999
|
function isEntity(s) {
|
|
575893
576000
|
return ENTITIES.includes(s);
|
|
575894
576001
|
}
|
|
575895
576002
|
function addEntity(cwd2, entity, text) {
|
|
575896
576003
|
try {
|
|
575897
576004
|
const f = file3(cwd2, entity);
|
|
575898
|
-
mkdirSync51(
|
|
576005
|
+
mkdirSync51(dirname67(f), { recursive: true });
|
|
575899
576006
|
appendFileSync6(f, JSON.stringify({ ts: new Date().toISOString(), text }) + `
|
|
575900
576007
|
`);
|
|
575901
576008
|
} catch {}
|
|
@@ -575988,7 +576095,7 @@ var exports_toolsmith = {};
|
|
|
575988
576095
|
__export(exports_toolsmith, {
|
|
575989
576096
|
call: () => call113
|
|
575990
576097
|
});
|
|
575991
|
-
import { existsSync as existsSync60, mkdirSync as mkdirSync52, readdirSync as readdirSync23, writeFileSync as
|
|
576098
|
+
import { existsSync as existsSync60, mkdirSync as mkdirSync52, readdirSync as readdirSync23, writeFileSync as writeFileSync50 } from "fs";
|
|
575992
576099
|
import { join as join182 } from "path";
|
|
575993
576100
|
var TEMPLATES, call113 = async (args) => {
|
|
575994
576101
|
const [name, langArg] = (args ?? "").trim().split(/\s+/).filter(Boolean);
|
|
@@ -576008,7 +576115,7 @@ var TEMPLATES, call113 = async (args) => {
|
|
|
576008
576115
|
const file4 = join182(dir, `${name}.${tpl.ext}`);
|
|
576009
576116
|
if (existsSync60(file4))
|
|
576010
576117
|
return { type: "text", value: `already exists: .ur/tools/${name}.${tpl.ext}` };
|
|
576011
|
-
|
|
576118
|
+
writeFileSync50(file4, tpl.body);
|
|
576012
576119
|
return { type: "text", value: `created .ur/tools/${name}.${tpl.ext}
|
|
576013
576120
|
Ask UR to run it \u2014 it will request approval before executing, and you can keep it as a plugin if useful.` };
|
|
576014
576121
|
};
|
|
@@ -576131,7 +576238,7 @@ var init_ur_doctor2 = __esm(() => {
|
|
|
576131
576238
|
});
|
|
576132
576239
|
|
|
576133
576240
|
// src/utils/urAssets.ts
|
|
576134
|
-
import { existsSync as existsSync62, mkdirSync as mkdirSync53, writeFileSync as
|
|
576241
|
+
import { existsSync as existsSync62, mkdirSync as mkdirSync53, writeFileSync as writeFileSync51 } from "fs";
|
|
576135
576242
|
import { join as join184 } from "path";
|
|
576136
576243
|
function scaffoldUrAssets(cwd2) {
|
|
576137
576244
|
const root2 = join184(cwd2, ".ur");
|
|
@@ -576146,7 +576253,7 @@ function scaffoldUrAssets(cwd2) {
|
|
|
576146
576253
|
skipped.push(file4.path);
|
|
576147
576254
|
continue;
|
|
576148
576255
|
}
|
|
576149
|
-
|
|
576256
|
+
writeFileSync51(full, file4.content);
|
|
576150
576257
|
created.push(file4.path);
|
|
576151
576258
|
}
|
|
576152
576259
|
return { root: root2, created, skipped };
|
|
@@ -589599,7 +589706,7 @@ var init_rewind = __esm(() => {
|
|
|
589599
589706
|
});
|
|
589600
589707
|
|
|
589601
589708
|
// src/utils/heapDumpService.ts
|
|
589602
|
-
import { createWriteStream as createWriteStream3, writeFileSync as
|
|
589709
|
+
import { createWriteStream as createWriteStream3, writeFileSync as writeFileSync52 } from "fs";
|
|
589603
589710
|
import { readdir as readdir27, readFile as readFile47, writeFile as writeFile40 } from "fs/promises";
|
|
589604
589711
|
import { join as join188 } from "path";
|
|
589605
589712
|
import { pipeline as pipeline2 } from "stream/promises";
|
|
@@ -589691,7 +589798,7 @@ async function captureMemoryDiagnostics(trigger2, dumpNumber = 0) {
|
|
|
589691
589798
|
smapsRollup,
|
|
589692
589799
|
platform: process.platform,
|
|
589693
589800
|
nodeVersion: process.version,
|
|
589694
|
-
ccVersion: "1.25.
|
|
589801
|
+
ccVersion: "1.25.3"
|
|
589695
589802
|
};
|
|
589696
589803
|
}
|
|
589697
589804
|
async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
|
|
@@ -589738,7 +589845,7 @@ async function performHeapDump(trigger2 = "manual", dumpNumber = 0) {
|
|
|
589738
589845
|
}
|
|
589739
589846
|
async function writeHeapSnapshot(filepath) {
|
|
589740
589847
|
if (typeof Bun !== "undefined") {
|
|
589741
|
-
|
|
589848
|
+
writeFileSync52(filepath, Bun.generateHeapSnapshot("v8", "arraybuffer"), {
|
|
589742
589849
|
mode: 384
|
|
589743
589850
|
});
|
|
589744
589851
|
Bun.gc(true);
|
|
@@ -590277,7 +590384,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
590277
590384
|
var call136 = async () => {
|
|
590278
590385
|
return {
|
|
590279
590386
|
type: "text",
|
|
590280
|
-
value: "1.25.
|
|
590387
|
+
value: "1.25.3"
|
|
590281
590388
|
};
|
|
590282
590389
|
}, version2, version_default;
|
|
590283
590390
|
var init_version = __esm(() => {
|
|
@@ -592333,7 +592440,7 @@ var init_advisor2 = __esm(() => {
|
|
|
592333
592440
|
// src/skills/bundledSkills.ts
|
|
592334
592441
|
import { constants as fsConstants5 } from "fs";
|
|
592335
592442
|
import { mkdir as mkdir37, open as open13 } from "fs/promises";
|
|
592336
|
-
import { dirname as
|
|
592443
|
+
import { dirname as dirname68, isAbsolute as isAbsolute31, join as join191, normalize as normalize13, sep as pathSep3 } from "path";
|
|
592337
592444
|
function registerBundledSkill(definition) {
|
|
592338
592445
|
const { files: files2 } = definition;
|
|
592339
592446
|
let skillRoot;
|
|
@@ -592397,7 +592504,7 @@ async function writeSkillFiles(dir, files2) {
|
|
|
592397
592504
|
const byParent = new Map;
|
|
592398
592505
|
for (const [relPath, content] of Object.entries(files2)) {
|
|
592399
592506
|
const target = resolveSkillFilePath(dir, relPath);
|
|
592400
|
-
const parent2 =
|
|
592507
|
+
const parent2 = dirname68(target);
|
|
592401
592508
|
const entry = [target, content];
|
|
592402
592509
|
const group = byParent.get(parent2);
|
|
592403
592510
|
if (group)
|
|
@@ -599369,7 +599476,7 @@ function generateHtmlReport(data, insights) {
|
|
|
599369
599476
|
</html>`;
|
|
599370
599477
|
}
|
|
599371
599478
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
599372
|
-
const version3 = typeof MACRO !== "undefined" ? "1.25.
|
|
599479
|
+
const version3 = typeof MACRO !== "undefined" ? "1.25.3" : "unknown";
|
|
599373
599480
|
const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
|
|
599374
599481
|
const facets_summary = {
|
|
599375
599482
|
total: facets.size,
|
|
@@ -600815,7 +600922,7 @@ import {
|
|
|
600815
600922
|
unlink as unlink22,
|
|
600816
600923
|
writeFile as writeFile44
|
|
600817
600924
|
} from "fs/promises";
|
|
600818
|
-
import { basename as basename44, dirname as
|
|
600925
|
+
import { basename as basename44, dirname as dirname70, join as join198 } from "path";
|
|
600819
600926
|
function isTranscriptMessage(entry) {
|
|
600820
600927
|
const t = entry.type;
|
|
600821
600928
|
return t === "user" || t === "assistant" || t === "attachment" || t === "system";
|
|
@@ -600861,7 +600968,7 @@ function getAgentMetadataPath(agentId) {
|
|
|
600861
600968
|
}
|
|
600862
600969
|
async function writeAgentMetadata(agentId, metadata) {
|
|
600863
600970
|
const path22 = getAgentMetadataPath(agentId);
|
|
600864
|
-
await mkdir40(
|
|
600971
|
+
await mkdir40(dirname70(path22), { recursive: true });
|
|
600865
600972
|
await writeFile44(path22, JSON.stringify(metadata));
|
|
600866
600973
|
}
|
|
600867
600974
|
async function readAgentMetadata(agentId) {
|
|
@@ -600884,7 +600991,7 @@ function getRemoteAgentMetadataPath(taskId) {
|
|
|
600884
600991
|
}
|
|
600885
600992
|
async function writeRemoteAgentMetadata(taskId, metadata) {
|
|
600886
600993
|
const path22 = getRemoteAgentMetadataPath(taskId);
|
|
600887
|
-
await mkdir40(
|
|
600994
|
+
await mkdir40(dirname70(path22), { recursive: true });
|
|
600888
600995
|
await writeFile44(path22, JSON.stringify(metadata));
|
|
600889
600996
|
}
|
|
600890
600997
|
async function readRemoteAgentMetadata(taskId) {
|
|
@@ -601073,7 +601180,7 @@ class Project {
|
|
|
601073
601180
|
try {
|
|
601074
601181
|
await fsAppendFile(filePath, data, { mode: 384 });
|
|
601075
601182
|
} catch {
|
|
601076
|
-
await mkdir40(
|
|
601183
|
+
await mkdir40(dirname70(filePath), { recursive: true, mode: 448 });
|
|
601077
601184
|
await fsAppendFile(filePath, data, { mode: 384 });
|
|
601078
601185
|
}
|
|
601079
601186
|
}
|
|
@@ -601673,7 +601780,7 @@ async function hydrateFromCCRv2InternalEvents(sessionId) {
|
|
|
601673
601780
|
}
|
|
601674
601781
|
for (const [agentId, entries] of byAgent) {
|
|
601675
601782
|
const agentFile = getAgentTranscriptPath(asAgentId(agentId));
|
|
601676
|
-
await mkdir40(
|
|
601783
|
+
await mkdir40(dirname70(agentFile), { recursive: true, mode: 448 });
|
|
601677
601784
|
const agentContent = entries.map((p2) => jsonStringify(p2) + `
|
|
601678
601785
|
`).join("");
|
|
601679
601786
|
await writeFile44(agentFile, agentContent, {
|
|
@@ -602210,7 +602317,7 @@ function appendEntryToFile(fullPath, entry) {
|
|
|
602210
602317
|
try {
|
|
602211
602318
|
fs12.appendFileSync(fullPath, line, { mode: 384 });
|
|
602212
602319
|
} catch {
|
|
602213
|
-
fs12.mkdirSync(
|
|
602320
|
+
fs12.mkdirSync(dirname70(fullPath), { mode: 448 });
|
|
602214
602321
|
fs12.appendFileSync(fullPath, line, { mode: 384 });
|
|
602215
602322
|
}
|
|
602216
602323
|
}
|
|
@@ -603644,7 +603751,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
603644
603751
|
init_settings2();
|
|
603645
603752
|
init_slowOperations();
|
|
603646
603753
|
init_uuid();
|
|
603647
|
-
VERSION5 = typeof MACRO !== "undefined" ? "1.25.
|
|
603754
|
+
VERSION5 = typeof MACRO !== "undefined" ? "1.25.3" : "unknown";
|
|
603648
603755
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
603649
603756
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
603650
603757
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -604849,7 +604956,7 @@ var init_filesystem = __esm(() => {
|
|
|
604849
604956
|
});
|
|
604850
604957
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
604851
604958
|
const nonce = randomBytes18(16).toString("hex");
|
|
604852
|
-
return join200(getURTempDir(), "bundled-skills", "1.25.
|
|
604959
|
+
return join200(getURTempDir(), "bundled-skills", "1.25.3", nonce);
|
|
604853
604960
|
});
|
|
604854
604961
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
604855
604962
|
});
|
|
@@ -609400,7 +609507,7 @@ import {
|
|
|
609400
609507
|
symlink as symlink5,
|
|
609401
609508
|
utimes as utimes2
|
|
609402
609509
|
} from "fs/promises";
|
|
609403
|
-
import { basename as basename46, dirname as
|
|
609510
|
+
import { basename as basename46, dirname as dirname71, join as join202 } from "path";
|
|
609404
609511
|
function validateWorktreeSlug(slug4) {
|
|
609405
609512
|
if (slug4.length > MAX_WORKTREE_SLUG_LENGTH) {
|
|
609406
609513
|
throw new Error(`Invalid worktree name: must be ${MAX_WORKTREE_SLUG_LENGTH} characters or fewer (got ${slug4.length})`);
|
|
@@ -609596,7 +609703,7 @@ async function copyWorktreeIncludeFiles(repoRoot, worktreePath) {
|
|
|
609596
609703
|
const srcPath = join202(repoRoot, relativePath3);
|
|
609597
609704
|
const destPath = join202(worktreePath, relativePath3);
|
|
609598
609705
|
try {
|
|
609599
|
-
await mkdir42(
|
|
609706
|
+
await mkdir42(dirname71(destPath), { recursive: true });
|
|
609600
609707
|
await copyFile10(srcPath, destPath);
|
|
609601
609708
|
copied.push(relativePath3);
|
|
609602
609709
|
} catch (e) {
|
|
@@ -609613,7 +609720,7 @@ async function performPostCreationSetup(repoRoot, worktreePath) {
|
|
|
609613
609720
|
const sourceSettingsLocal = join202(repoRoot, localSettingsRelativePath);
|
|
609614
609721
|
try {
|
|
609615
609722
|
const destSettingsLocal = join202(worktreePath, localSettingsRelativePath);
|
|
609616
|
-
await mkdirRecursive(
|
|
609723
|
+
await mkdirRecursive(dirname71(destSettingsLocal));
|
|
609617
609724
|
await copyFile10(sourceSettingsLocal, destSettingsLocal);
|
|
609618
609725
|
logForDebugging(`Copied settings.local.json to worktree: ${destSettingsLocal}`);
|
|
609619
609726
|
} catch (e) {
|
|
@@ -610400,7 +610507,7 @@ function getSessionSpecificGuidanceSection(enabledTools, skillToolCommands) {
|
|
|
610400
610507
|
const hasAgentTool = enabledTools.has(AGENT_TOOL_NAME);
|
|
610401
610508
|
const searchTools = hasEmbeddedSearchTools() ? `\`find\` or \`grep\` via the ${BASH_TOOL_NAME} tool` : `the ${GLOB_TOOL_NAME} or ${GREP_TOOL_NAME}`;
|
|
610402
610509
|
const items = [
|
|
610403
|
-
hasAskUserQuestionTool ? `When a request is ambiguous, underspecified, or could reasonably be done more than one way, ask with ${ASK_USER_QUESTION_TOOL_NAME} BEFORE doing significant or hard-to-reverse work, and use it the same way to confirm direction at key planning decisions. ALWAYS call the ${ASK_USER_QUESTION_TOOL_NAME} tool to ask such questions \u2014 NEVER write the questions and choices as plain prose in your reply, because the user can only pick options when you call the tool. Offer 2-
|
|
610510
|
+
hasAskUserQuestionTool ? `When a request is ambiguous, underspecified, or could reasonably be done more than one way, ask with ${ASK_USER_QUESTION_TOOL_NAME} BEFORE doing significant or hard-to-reverse work, and use it the same way to confirm direction at key planning decisions. ALWAYS call the ${ASK_USER_QUESTION_TOOL_NAME} tool to ask such questions \u2014 NEVER write the questions and choices as plain prose in your reply, because the user can only pick options when you call the tool. Offer 2-8 concrete options per question (put any recommendation first and suffix it "(Recommended)"); the user picks with arrow keys and can always choose "Other" to type a custom answer. Don't ask what you can determine yourself, and ask no more than necessary. Also use it if you don't understand why the user denied a tool call.` : null,
|
|
610404
610511
|
getIsNonInteractiveSession() ? null : `If you need the user to run a shell command themselves (e.g., an interactive login like \`gcloud auth login\`), suggest they type \`! <command>\` in the prompt \u2014 the \`!\` prefix runs the command in this session so its output lands directly in the conversation.`,
|
|
610405
610512
|
hasAgentTool ? getAgentToolSection() : null,
|
|
610406
610513
|
...hasAgentTool && areExplorePlanAgentsEnabled() && !isForkSubagentEnabled() ? [
|
|
@@ -611139,7 +611246,7 @@ function computeFingerprint(messageText, version3) {
|
|
|
611139
611246
|
}
|
|
611140
611247
|
function computeFingerprintFromMessages(messages) {
|
|
611141
611248
|
const firstMessageText = extractFirstMessageText(messages);
|
|
611142
|
-
return computeFingerprint(firstMessageText, "1.25.
|
|
611249
|
+
return computeFingerprint(firstMessageText, "1.25.3");
|
|
611143
611250
|
}
|
|
611144
611251
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
611145
611252
|
var init_fingerprint = () => {};
|
|
@@ -613005,7 +613112,7 @@ async function sideQuery(opts) {
|
|
|
613005
613112
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
613006
613113
|
}
|
|
613007
613114
|
const messageText = extractFirstUserMessageText(messages);
|
|
613008
|
-
const fingerprint = computeFingerprint(messageText, "1.25.
|
|
613115
|
+
const fingerprint = computeFingerprint(messageText, "1.25.3");
|
|
613009
613116
|
const attributionHeader = getAttributionHeader(fingerprint);
|
|
613010
613117
|
const systemBlocks = [
|
|
613011
613118
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -617742,7 +617849,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
617742
617849
|
slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
|
|
617743
617850
|
apiKeySource: getURHQApiKeyWithSource().source,
|
|
617744
617851
|
betas: getSdkBetas(),
|
|
617745
|
-
ur_version: "1.25.
|
|
617852
|
+
ur_version: "1.25.3",
|
|
617746
617853
|
output_style: outputStyle2,
|
|
617747
617854
|
agents: inputs.agents.map((agent) => agent.agentType),
|
|
617748
617855
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill2) => skill2.name),
|
|
@@ -632370,7 +632477,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
632370
632477
|
function getSemverPart(version3) {
|
|
632371
632478
|
return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
|
|
632372
632479
|
}
|
|
632373
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.25.
|
|
632480
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.25.3") {
|
|
632374
632481
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react224.useState(() => getSemverPart(initialVersion));
|
|
632375
632482
|
if (!updatedVersion) {
|
|
632376
632483
|
return null;
|
|
@@ -632419,7 +632526,7 @@ function AutoUpdater({
|
|
|
632419
632526
|
return;
|
|
632420
632527
|
}
|
|
632421
632528
|
if (false) {}
|
|
632422
|
-
const currentVersion = "1.25.
|
|
632529
|
+
const currentVersion = "1.25.3";
|
|
632423
632530
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
632424
632531
|
let latestVersion = await getLatestVersion(channel);
|
|
632425
632532
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -632648,12 +632755,12 @@ function NativeAutoUpdater({
|
|
|
632648
632755
|
logEvent("tengu_native_auto_updater_start", {});
|
|
632649
632756
|
try {
|
|
632650
632757
|
const maxVersion = await getMaxVersion();
|
|
632651
|
-
if (maxVersion && gt("1.25.
|
|
632758
|
+
if (maxVersion && gt("1.25.3", maxVersion)) {
|
|
632652
632759
|
const msg = await getMaxVersionMessage();
|
|
632653
632760
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
632654
632761
|
}
|
|
632655
632762
|
const result = await installLatest(channel);
|
|
632656
|
-
const currentVersion = "1.25.
|
|
632763
|
+
const currentVersion = "1.25.3";
|
|
632657
632764
|
const latencyMs = Date.now() - startTime;
|
|
632658
632765
|
if (result.lockFailed) {
|
|
632659
632766
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -632790,17 +632897,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
632790
632897
|
const maxVersion = await getMaxVersion();
|
|
632791
632898
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
632792
632899
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
632793
|
-
if (gte("1.25.
|
|
632794
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.25.
|
|
632900
|
+
if (gte("1.25.3", maxVersion)) {
|
|
632901
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.25.3"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
632795
632902
|
setUpdateAvailable(false);
|
|
632796
632903
|
return;
|
|
632797
632904
|
}
|
|
632798
632905
|
latest = maxVersion;
|
|
632799
632906
|
}
|
|
632800
|
-
const hasUpdate = latest && !gte("1.25.
|
|
632907
|
+
const hasUpdate = latest && !gte("1.25.3", latest) && !shouldSkipVersion(latest);
|
|
632801
632908
|
setUpdateAvailable(!!hasUpdate);
|
|
632802
632909
|
if (hasUpdate) {
|
|
632803
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.25.
|
|
632910
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.25.3"} -> ${latest}`);
|
|
632804
632911
|
}
|
|
632805
632912
|
};
|
|
632806
632913
|
$3[0] = t1;
|
|
@@ -632834,7 +632941,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
632834
632941
|
wrap: "truncate",
|
|
632835
632942
|
children: [
|
|
632836
632943
|
"currentVersion: ",
|
|
632837
|
-
"1.25.
|
|
632944
|
+
"1.25.3"
|
|
632838
632945
|
]
|
|
632839
632946
|
}, undefined, true, undefined, this);
|
|
632840
632947
|
$3[3] = verbose;
|
|
@@ -645149,21 +645256,35 @@ var init_VimTextInput = __esm(() => {
|
|
|
645149
645256
|
|
|
645150
645257
|
// src/services/providers/providerRegistry.ts
|
|
645151
645258
|
import { spawn as spawn12 } from "child_process";
|
|
645259
|
+
function normalizeProviderInput(value) {
|
|
645260
|
+
return value.trim().toLowerCase().replace(/[_\s]+/g, "-");
|
|
645261
|
+
}
|
|
645152
645262
|
function isProviderId(value) {
|
|
645153
645263
|
return PROVIDER_IDS.includes(value);
|
|
645154
645264
|
}
|
|
645265
|
+
function resolveProviderId(value) {
|
|
645266
|
+
const normalized = normalizeProviderInput(value);
|
|
645267
|
+
if (isProviderId(normalized)) {
|
|
645268
|
+
return normalized;
|
|
645269
|
+
}
|
|
645270
|
+
return PROVIDER_ALIASES[normalized] ?? null;
|
|
645271
|
+
}
|
|
645272
|
+
function providerAliasesFor(id) {
|
|
645273
|
+
return PROVIDER_ALIAS_ENTRIES.find((entry) => entry.canonical === id)?.aliases ?? [];
|
|
645274
|
+
}
|
|
645155
645275
|
function getProviderDefinition(id) {
|
|
645156
645276
|
return PROVIDERS[id];
|
|
645157
645277
|
}
|
|
645158
645278
|
function getActiveProviderSettings(settings = getInitialSettings()) {
|
|
645159
645279
|
const configured = settings.provider ?? {};
|
|
645160
|
-
const active = configured.active
|
|
645280
|
+
const active = configured.active ? resolveProviderId(configured.active) ?? "ollama" : "ollama";
|
|
645281
|
+
const fallback = configured.fallback === "disabled" ? "disabled" : configured.fallback ? resolveProviderId(configured.fallback) ?? undefined : undefined;
|
|
645161
645282
|
return {
|
|
645162
645283
|
active,
|
|
645163
645284
|
model: configured.model ?? settings.model,
|
|
645164
645285
|
baseUrl: configured.baseUrl,
|
|
645165
645286
|
commandPath: configured.commandPath,
|
|
645166
|
-
fallback
|
|
645287
|
+
fallback
|
|
645167
645288
|
};
|
|
645168
645289
|
}
|
|
645169
645290
|
function getProviderRuntimeInfo(settings = getInitialSettings()) {
|
|
@@ -645235,21 +645356,23 @@ function setSafeProviderConfig(key, value) {
|
|
|
645235
645356
|
let settings;
|
|
645236
645357
|
try {
|
|
645237
645358
|
if (key === "provider") {
|
|
645238
|
-
|
|
645359
|
+
const provider = resolveProviderId(trimmed);
|
|
645360
|
+
if (!provider) {
|
|
645239
645361
|
return {
|
|
645240
645362
|
ok: false,
|
|
645241
645363
|
message: `Unknown provider "${trimmed}". Run: ur provider list`
|
|
645242
645364
|
};
|
|
645243
645365
|
}
|
|
645244
|
-
settings = { provider: { active:
|
|
645366
|
+
settings = { provider: { active: provider } };
|
|
645245
645367
|
} else if (key === "provider.fallback") {
|
|
645246
|
-
|
|
645368
|
+
const fallback = trimmed === "disabled" ? "disabled" : resolveProviderId(trimmed);
|
|
645369
|
+
if (!fallback) {
|
|
645247
645370
|
return {
|
|
645248
645371
|
ok: false,
|
|
645249
645372
|
message: `Unknown fallback provider "${trimmed}". Run: ur provider list`
|
|
645250
645373
|
};
|
|
645251
645374
|
}
|
|
645252
|
-
settings = { provider: { fallback
|
|
645375
|
+
settings = { provider: { fallback } };
|
|
645253
645376
|
} else if (key === "provider.command_path") {
|
|
645254
645377
|
settings = { provider: { commandPath: trimmed } };
|
|
645255
645378
|
} else if (key === "model") {
|
|
@@ -645270,7 +645393,8 @@ function setSafeProviderConfig(key, value) {
|
|
|
645270
645393
|
message: `Failed to write UR-AGENT settings: ${result.error.message}`
|
|
645271
645394
|
};
|
|
645272
645395
|
}
|
|
645273
|
-
|
|
645396
|
+
const savedValue = key === "provider" || key === "provider.fallback" ? key === "provider.fallback" && trimmed === "disabled" ? "disabled" : resolveProviderId(trimmed) ?? trimmed : trimmed;
|
|
645397
|
+
return { ok: true, message: `Set ${key} to ${savedValue}.` };
|
|
645274
645398
|
}
|
|
645275
645399
|
function outputText(result) {
|
|
645276
645400
|
return `${result.stdout}
|
|
@@ -645389,11 +645513,11 @@ async function checkEndpoint(definition, settings, adapters, result) {
|
|
|
645389
645513
|
async function checkSubscriptionProvider(definition, settings, adapters, result) {
|
|
645390
645514
|
const commandPath = await resolveCommand(definition, settings, adapters);
|
|
645391
645515
|
if (!commandPath) {
|
|
645392
|
-
const
|
|
645516
|
+
const commands = definition.commandCandidates?.join(", ") ?? definition.id;
|
|
645393
645517
|
result.checks.push({
|
|
645394
645518
|
name: "cli",
|
|
645395
645519
|
status: "fail",
|
|
645396
|
-
message:
|
|
645520
|
+
message: `No official CLI command found on PATH. Tried: ${commands}.`
|
|
645397
645521
|
});
|
|
645398
645522
|
addFailure(result, "CLI missing", `Install the official ${definition.displayName} CLI, then run ur auth ${authAliasForProvider(definition.id)}.`);
|
|
645399
645523
|
return;
|
|
@@ -645614,12 +645738,14 @@ async function launchProviderAuth(alias2, options2 = {}) {
|
|
|
645614
645738
|
}
|
|
645615
645739
|
const commandPath = await resolveCommand(getProviderDefinition(provider), {}, {});
|
|
645616
645740
|
if (!commandPath) {
|
|
645741
|
+
const commands = getProviderDefinition(provider).commandCandidates?.join(", ") ?? provider;
|
|
645617
645742
|
return {
|
|
645618
645743
|
ok: false,
|
|
645619
|
-
message:
|
|
645744
|
+
message: `No official ${getProviderDefinition(provider).displayName} CLI command found. Tried: ${commands}. Install the official CLI first.`
|
|
645620
645745
|
};
|
|
645621
645746
|
}
|
|
645622
|
-
const
|
|
645747
|
+
const printableCommand = commandPath.split(/[\\/]/).pop() ?? authCommand.command;
|
|
645748
|
+
const printable = [printableCommand, ...authCommand.args].join(" ");
|
|
645623
645749
|
if (options2.dryRun || !process.stdin.isTTY || !process.stdout.isTTY) {
|
|
645624
645750
|
return {
|
|
645625
645751
|
ok: true,
|
|
@@ -645647,6 +645773,7 @@ function formatProviderList(json2 = false) {
|
|
|
645647
645773
|
const providers = listProviders().map((provider) => ({
|
|
645648
645774
|
id: provider.id,
|
|
645649
645775
|
name: provider.displayName,
|
|
645776
|
+
aliases: providerAliasesFor(provider.id),
|
|
645650
645777
|
accessType: provider.accessType,
|
|
645651
645778
|
authMode: provider.authMode,
|
|
645652
645779
|
legalPath: provider.legalPath
|
|
@@ -645655,9 +645782,9 @@ function formatProviderList(json2 = false) {
|
|
|
645655
645782
|
return JSON.stringify(providers, null, 2);
|
|
645656
645783
|
}
|
|
645657
645784
|
return [
|
|
645658
|
-
"Provider
|
|
645659
|
-
"
|
|
645660
|
-
...providers.map((provider) => `${provider.name.
|
|
645785
|
+
"Provider | ID | Aliases | Access type | Legal path",
|
|
645786
|
+
"--- | --- | --- | --- | ---",
|
|
645787
|
+
...providers.map((provider) => `${provider.name} | ${provider.id} | ${provider.aliases.slice(0, 3).join(", ") || "-"} | ${provider.accessType} | ${provider.legalPath}`)
|
|
645661
645788
|
].join(`
|
|
645662
645789
|
`);
|
|
645663
645790
|
}
|
|
@@ -645697,7 +645824,7 @@ Suggested fix: ${result.suggestedFix}` : "";
|
|
|
645697
645824
|
Auth mode: ${authModeLabel(result.authMode)}
|
|
645698
645825
|
Ready: ${result.ok ? "yes" : "no"}${failure}${fix}`;
|
|
645699
645826
|
}
|
|
645700
|
-
var PROVIDER_IDS, LOCALHOST_RE, PROVIDERS;
|
|
645827
|
+
var PROVIDER_IDS, LOCALHOST_RE, PROVIDERS, PROVIDER_ALIAS_ENTRIES, PROVIDER_ALIASES;
|
|
645701
645828
|
var init_providerRegistry = __esm(() => {
|
|
645702
645829
|
init_execFileNoThrow();
|
|
645703
645830
|
init_settings2();
|
|
@@ -645763,7 +645890,7 @@ var init_providerRegistry = __esm(() => {
|
|
|
645763
645890
|
accessType: "subscription",
|
|
645764
645891
|
authMode: "personal-login",
|
|
645765
645892
|
legalPath: "official Antigravity CLI login, where supported",
|
|
645766
|
-
commandCandidates: ["antigravity", "google-antigravity", "ag"],
|
|
645893
|
+
commandCandidates: ["agy", "antigravity", "google-antigravity", "ag"],
|
|
645767
645894
|
versionArgs: ["--version"],
|
|
645768
645895
|
loginArgs: []
|
|
645769
645896
|
},
|
|
@@ -645854,6 +645981,65 @@ var init_providerRegistry = __esm(() => {
|
|
|
645854
645981
|
endpointKind: "openai-compatible"
|
|
645855
645982
|
}
|
|
645856
645983
|
};
|
|
645984
|
+
PROVIDER_ALIAS_ENTRIES = [
|
|
645985
|
+
{
|
|
645986
|
+
canonical: "codex-cli",
|
|
645987
|
+
aliases: ["chatgpt", "codex", "codex cli", "openai codex", "chatgpt codex"]
|
|
645988
|
+
},
|
|
645989
|
+
{
|
|
645990
|
+
canonical: "claude-code-cli",
|
|
645991
|
+
aliases: ["claude", "claude code", "claude cli", "anthropic claude"]
|
|
645992
|
+
},
|
|
645993
|
+
{
|
|
645994
|
+
canonical: "gemini-cli",
|
|
645995
|
+
aliases: ["gemini", "gemini cli", "gemini code assist", "google gemini cli"]
|
|
645996
|
+
},
|
|
645997
|
+
{
|
|
645998
|
+
canonical: "antigravity-cli",
|
|
645999
|
+
aliases: ["antigravity", "antigravity cli", "agy", "ag", "google antigravity"]
|
|
646000
|
+
},
|
|
646001
|
+
{
|
|
646002
|
+
canonical: "openai-api",
|
|
646003
|
+
aliases: ["openai", "openai api"]
|
|
646004
|
+
},
|
|
646005
|
+
{
|
|
646006
|
+
canonical: "anthropic-api",
|
|
646007
|
+
aliases: ["anthropic", "anthropic claude api", "claude api"]
|
|
646008
|
+
},
|
|
646009
|
+
{
|
|
646010
|
+
canonical: "gemini-api",
|
|
646011
|
+
aliases: ["gemini api", "google gemini api"]
|
|
646012
|
+
},
|
|
646013
|
+
{
|
|
646014
|
+
canonical: "openrouter",
|
|
646015
|
+
aliases: ["openrouter api"]
|
|
646016
|
+
},
|
|
646017
|
+
{
|
|
646018
|
+
canonical: "openai-compatible",
|
|
646019
|
+
aliases: ["compatible", "openai compatible", "openai compatible api"]
|
|
646020
|
+
},
|
|
646021
|
+
{
|
|
646022
|
+
canonical: "ollama",
|
|
646023
|
+
aliases: ["ollama local"]
|
|
646024
|
+
},
|
|
646025
|
+
{
|
|
646026
|
+
canonical: "lmstudio",
|
|
646027
|
+
aliases: ["lm studio", "lm-studio"]
|
|
646028
|
+
},
|
|
646029
|
+
{
|
|
646030
|
+
canonical: "llama.cpp",
|
|
646031
|
+
aliases: ["llama cpp", "llamacpp", "llama-cpp"]
|
|
646032
|
+
},
|
|
646033
|
+
{
|
|
646034
|
+
canonical: "vllm",
|
|
646035
|
+
aliases: ["vllm server"]
|
|
646036
|
+
}
|
|
646037
|
+
];
|
|
646038
|
+
PROVIDER_ALIASES = Object.fromEntries(PROVIDER_ALIAS_ENTRIES.flatMap((entry) => [
|
|
646039
|
+
[normalizeProviderInput(entry.canonical), entry.canonical],
|
|
646040
|
+
[entry.canonical, entry.canonical],
|
|
646041
|
+
...entry.aliases.map((alias2) => [normalizeProviderInput(alias2), entry.canonical])
|
|
646042
|
+
]));
|
|
645857
646043
|
});
|
|
645858
646044
|
|
|
645859
646045
|
// src/utils/statusBar.ts
|
|
@@ -645989,7 +646175,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
645989
646175
|
project_dir: getOriginalCwd(),
|
|
645990
646176
|
added_dirs: addedDirs
|
|
645991
646177
|
},
|
|
645992
|
-
version: "1.25.
|
|
646178
|
+
version: "1.25.3",
|
|
645993
646179
|
output_style: {
|
|
645994
646180
|
name: outputStyleName
|
|
645995
646181
|
},
|
|
@@ -646064,7 +646250,7 @@ function StatusLineInner({
|
|
|
646064
646250
|
const taskValues = Object.values(tasks2);
|
|
646065
646251
|
const taskRunningCount = taskValues.filter((task2) => task2.status === "running" || task2.status === "pending").length;
|
|
646066
646252
|
const defaultStatusLineText = buildDefaultStatusBar({
|
|
646067
|
-
version: "1.25.
|
|
646253
|
+
version: "1.25.3",
|
|
646068
646254
|
providerLabel: providerRuntime.providerLabel,
|
|
646069
646255
|
authMode: providerRuntime.authLabel,
|
|
646070
646256
|
model: providerRuntime.model ?? renderModelName(mainLoopModel),
|
|
@@ -655904,7 +656090,7 @@ __export(exports_asciicast, {
|
|
|
655904
656090
|
_resetRecordingStateForTesting: () => _resetRecordingStateForTesting
|
|
655905
656091
|
});
|
|
655906
656092
|
import { appendFile as appendFile7, rename as rename10 } from "fs/promises";
|
|
655907
|
-
import { basename as basename59, dirname as
|
|
656093
|
+
import { basename as basename59, dirname as dirname72, join as join208 } from "path";
|
|
655908
656094
|
function getRecordFilePath() {
|
|
655909
656095
|
if (recordingState.filePath !== null) {
|
|
655910
656096
|
return recordingState.filePath;
|
|
@@ -655986,7 +656172,7 @@ function installAsciicastRecorder() {
|
|
|
655986
656172
|
}
|
|
655987
656173
|
});
|
|
655988
656174
|
try {
|
|
655989
|
-
getFsImplementation().mkdirSync(
|
|
656175
|
+
getFsImplementation().mkdirSync(dirname72(filePath));
|
|
655990
656176
|
} catch {}
|
|
655991
656177
|
getFsImplementation().appendFileSync(filePath, header + `
|
|
655992
656178
|
`, { mode: 384 });
|
|
@@ -656055,7 +656241,7 @@ var init_asciicast = __esm(() => {
|
|
|
656055
656241
|
});
|
|
656056
656242
|
|
|
656057
656243
|
// src/utils/sessionRestore.ts
|
|
656058
|
-
import { dirname as
|
|
656244
|
+
import { dirname as dirname73 } from "path";
|
|
656059
656245
|
function extractTodosFromTranscript(messages) {
|
|
656060
656246
|
for (let i3 = messages.length - 1;i3 >= 0; i3--) {
|
|
656061
656247
|
const msg = messages[i3];
|
|
@@ -656180,7 +656366,7 @@ async function processResumedConversation(result, opts, context4) {
|
|
|
656180
656366
|
if (!opts.forkSession) {
|
|
656181
656367
|
const sid = opts.sessionIdOverride ?? result.sessionId;
|
|
656182
656368
|
if (sid) {
|
|
656183
|
-
switchSession(asSessionId(sid), opts.transcriptPath ?
|
|
656369
|
+
switchSession(asSessionId(sid), opts.transcriptPath ? dirname73(opts.transcriptPath) : null);
|
|
656184
656370
|
await renameRecordingForSession();
|
|
656185
656371
|
await resetSessionFilePointer();
|
|
656186
656372
|
restoreCostStateForSession(sid);
|
|
@@ -657550,7 +657736,7 @@ async function submitTranscriptShare(messages, trigger2, appearanceId) {
|
|
|
657550
657736
|
} catch {}
|
|
657551
657737
|
const data = {
|
|
657552
657738
|
trigger: trigger2,
|
|
657553
|
-
version: "1.25.
|
|
657739
|
+
version: "1.25.3",
|
|
657554
657740
|
platform: process.platform,
|
|
657555
657741
|
transcript,
|
|
657556
657742
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -664809,7 +664995,7 @@ var exports_REPL = {};
|
|
|
664809
664995
|
__export(exports_REPL, {
|
|
664810
664996
|
REPL: () => REPL
|
|
664811
664997
|
});
|
|
664812
|
-
import { dirname as
|
|
664998
|
+
import { dirname as dirname74, join as join211 } from "path";
|
|
664813
664999
|
import { tmpdir as tmpdir13 } from "os";
|
|
664814
665000
|
import { writeFile as writeFile47 } from "fs/promises";
|
|
664815
665001
|
import { randomUUID as randomUUID51 } from "crypto";
|
|
@@ -665749,7 +665935,7 @@ function REPL({
|
|
|
665749
665935
|
const targetSessionCosts = getStoredSessionCosts(sessionId);
|
|
665750
665936
|
saveCurrentSessionCosts();
|
|
665751
665937
|
resetCostState();
|
|
665752
|
-
switchSession(asSessionId(sessionId), log2.fullPath ?
|
|
665938
|
+
switchSession(asSessionId(sessionId), log2.fullPath ? dirname74(log2.fullPath) : null);
|
|
665753
665939
|
const {
|
|
665754
665940
|
renameRecordingForSession: renameRecordingForSession2
|
|
665755
665941
|
} = await Promise.resolve().then(() => (init_asciicast(), exports_asciicast));
|
|
@@ -669432,7 +669618,7 @@ function WelcomeV2() {
|
|
|
669432
669618
|
dimColor: true,
|
|
669433
669619
|
children: [
|
|
669434
669620
|
"v",
|
|
669435
|
-
"1.25.
|
|
669621
|
+
"1.25.3"
|
|
669436
669622
|
]
|
|
669437
669623
|
}, undefined, true, undefined, this)
|
|
669438
669624
|
]
|
|
@@ -670692,7 +670878,7 @@ function completeOnboarding() {
|
|
|
670692
670878
|
saveGlobalConfig((current) => ({
|
|
670693
670879
|
...current,
|
|
670694
670880
|
hasCompletedOnboarding: true,
|
|
670695
|
-
lastOnboardingVersion: "1.25.
|
|
670881
|
+
lastOnboardingVersion: "1.25.3"
|
|
670696
670882
|
}));
|
|
670697
670883
|
}
|
|
670698
670884
|
function showDialog(root2, renderer) {
|
|
@@ -671836,7 +672022,7 @@ var exports_ResumeConversation = {};
|
|
|
671836
672022
|
__export(exports_ResumeConversation, {
|
|
671837
672023
|
ResumeConversation: () => ResumeConversation
|
|
671838
672024
|
});
|
|
671839
|
-
import { dirname as
|
|
672025
|
+
import { dirname as dirname75 } from "path";
|
|
671840
672026
|
function parsePrIdentifier(value) {
|
|
671841
672027
|
const directNumber = parseInt(value, 10);
|
|
671842
672028
|
if (!isNaN(directNumber) && directNumber > 0) {
|
|
@@ -671968,7 +672154,7 @@ function ResumeConversation({
|
|
|
671968
672154
|
}
|
|
671969
672155
|
if (false) {}
|
|
671970
672156
|
if (result_3.sessionId && !forkSession) {
|
|
671971
|
-
switchSession(asSessionId(result_3.sessionId), log_0.fullPath ?
|
|
672157
|
+
switchSession(asSessionId(result_3.sessionId), log_0.fullPath ? dirname75(log_0.fullPath) : null);
|
|
671972
672158
|
await renameRecordingForSession();
|
|
671973
672159
|
await resetSessionFilePointer();
|
|
671974
672160
|
restoreCostStateForSession(result_3.sessionId);
|
|
@@ -675744,7 +675930,7 @@ var init_createDirectConnectSession = __esm(() => {
|
|
|
675744
675930
|
});
|
|
675745
675931
|
|
|
675746
675932
|
// src/utils/errorLogSink.ts
|
|
675747
|
-
import { dirname as
|
|
675933
|
+
import { dirname as dirname76, join as join212 } from "path";
|
|
675748
675934
|
function getErrorsPath() {
|
|
675749
675935
|
return join212(CACHE_PATHS.errors(), DATE + ".jsonl");
|
|
675750
675936
|
}
|
|
@@ -675765,7 +675951,7 @@ function createJsonlWriter(options2) {
|
|
|
675765
675951
|
function getLogWriter(path24) {
|
|
675766
675952
|
let writer = logWriters.get(path24);
|
|
675767
675953
|
if (!writer) {
|
|
675768
|
-
const dir =
|
|
675954
|
+
const dir = dirname76(path24);
|
|
675769
675955
|
writer = createJsonlWriter({
|
|
675770
675956
|
writeFn: (content) => {
|
|
675771
675957
|
try {
|
|
@@ -675793,7 +675979,7 @@ function appendToLog(path24, message) {
|
|
|
675793
675979
|
cwd: getFsImplementation().cwd(),
|
|
675794
675980
|
userType: process.env.USER_TYPE,
|
|
675795
675981
|
sessionId: getSessionId(),
|
|
675796
|
-
version: "1.25.
|
|
675982
|
+
version: "1.25.3"
|
|
675797
675983
|
};
|
|
675798
675984
|
getLogWriter(path24).write(messageWithTimestamp);
|
|
675799
675985
|
}
|
|
@@ -679887,8 +680073,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
679887
680073
|
}
|
|
679888
680074
|
async function checkEnvLessBridgeMinVersion() {
|
|
679889
680075
|
const cfg = await getEnvLessBridgeConfig();
|
|
679890
|
-
if (cfg.min_version && lt("1.25.
|
|
679891
|
-
return `Your version of UR (${"1.25.
|
|
680076
|
+
if (cfg.min_version && lt("1.25.3", cfg.min_version)) {
|
|
680077
|
+
return `Your version of UR (${"1.25.3"}) is too old for Remote Control.
|
|
679892
680078
|
Version ${cfg.min_version} or higher is required. Run \`ur update\` to update.`;
|
|
679893
680079
|
}
|
|
679894
680080
|
return null;
|
|
@@ -680216,14 +680402,14 @@ __export(exports_bridgePointer, {
|
|
|
680216
680402
|
BRIDGE_POINTER_TTL_MS: () => BRIDGE_POINTER_TTL_MS
|
|
680217
680403
|
});
|
|
680218
680404
|
import { mkdir as mkdir46, readFile as readFile55, stat as stat50, unlink as unlink26, writeFile as writeFile50 } from "fs/promises";
|
|
680219
|
-
import { dirname as
|
|
680405
|
+
import { dirname as dirname77, join as join216 } from "path";
|
|
680220
680406
|
function getBridgePointerPath(dir) {
|
|
680221
680407
|
return join216(getProjectsDir(), sanitizePath2(dir), "bridge-pointer.json");
|
|
680222
680408
|
}
|
|
680223
680409
|
async function writeBridgePointer(dir, pointer) {
|
|
680224
680410
|
const path24 = getBridgePointerPath(dir);
|
|
680225
680411
|
try {
|
|
680226
|
-
await mkdir46(
|
|
680412
|
+
await mkdir46(dirname77(path24), { recursive: true });
|
|
680227
680413
|
await writeFile50(path24, jsonStringify(pointer), "utf8");
|
|
680228
680414
|
logForDebugging(`[bridge:pointer] wrote ${path24}`);
|
|
680229
680415
|
} catch (err2) {
|
|
@@ -680362,7 +680548,7 @@ async function initBridgeCore(params) {
|
|
|
680362
680548
|
const rawApi = createBridgeApiClient({
|
|
680363
680549
|
baseUrl,
|
|
680364
680550
|
getAccessToken,
|
|
680365
|
-
runnerVersion: "1.25.
|
|
680551
|
+
runnerVersion: "1.25.3",
|
|
680366
680552
|
onDebug: logForDebugging,
|
|
680367
680553
|
onAuth401,
|
|
680368
680554
|
getTrustedDeviceToken
|
|
@@ -682227,7 +682413,7 @@ __export(exports_print, {
|
|
|
682227
682413
|
canBatchWith: () => canBatchWith
|
|
682228
682414
|
});
|
|
682229
682415
|
import { readFile as readFile56, stat as stat51, writeFile as writeFile51 } from "fs/promises";
|
|
682230
|
-
import { dirname as
|
|
682416
|
+
import { dirname as dirname78 } from "path";
|
|
682231
682417
|
import { cwd as cwd2 } from "process";
|
|
682232
682418
|
import { randomUUID as randomUUID57 } from "crypto";
|
|
682233
682419
|
function trackReceivedMessageUuid(uuid3) {
|
|
@@ -684680,7 +684866,7 @@ async function loadInitialMessages(setAppState, options2) {
|
|
|
684680
684866
|
if (false) {}
|
|
684681
684867
|
if (!options2.forkSession) {
|
|
684682
684868
|
if (result.sessionId) {
|
|
684683
|
-
switchSession(asSessionId(result.sessionId), result.fullPath ?
|
|
684869
|
+
switchSession(asSessionId(result.sessionId), result.fullPath ? dirname78(result.fullPath) : null);
|
|
684684
684870
|
if (persistSession) {
|
|
684685
684871
|
await resetSessionFilePointer();
|
|
684686
684872
|
}
|
|
@@ -684778,7 +684964,7 @@ async function loadInitialMessages(setAppState, options2) {
|
|
|
684778
684964
|
}
|
|
684779
684965
|
if (false) {}
|
|
684780
684966
|
if (!options2.forkSession && result.sessionId) {
|
|
684781
|
-
switchSession(asSessionId(result.sessionId), result.fullPath ?
|
|
684967
|
+
switchSession(asSessionId(result.sessionId), result.fullPath ? dirname78(result.fullPath) : null);
|
|
684782
684968
|
if (persistSession) {
|
|
684783
684969
|
await resetSessionFilePointer();
|
|
684784
684970
|
}
|
|
@@ -686043,7 +686229,7 @@ async function startMCPServer(cwd3, debug2, verbose) {
|
|
|
686043
686229
|
setCwd(cwd3);
|
|
686044
686230
|
const server2 = new Server({
|
|
686045
686231
|
name: "ur/tengu",
|
|
686046
|
-
version: "1.25.
|
|
686232
|
+
version: "1.25.3"
|
|
686047
686233
|
}, {
|
|
686048
686234
|
capabilities: {
|
|
686049
686235
|
tools: {}
|
|
@@ -686612,11 +686798,12 @@ async function providerStatusHandler(options2 = {}) {
|
|
|
686612
686798
|
async function providerDoctorHandler(providerArg, options2 = {}) {
|
|
686613
686799
|
let provider;
|
|
686614
686800
|
if (providerArg) {
|
|
686615
|
-
|
|
686801
|
+
const resolved = resolveProviderId(providerArg);
|
|
686802
|
+
if (!resolved) {
|
|
686616
686803
|
writeError(`Unknown provider "${providerArg}". Run: ur provider list`);
|
|
686617
686804
|
process.exit(1);
|
|
686618
686805
|
}
|
|
686619
|
-
provider =
|
|
686806
|
+
provider = resolved;
|
|
686620
686807
|
}
|
|
686621
686808
|
const settings = getInitialSettings();
|
|
686622
686809
|
const active = getActiveProviderSettings(settings).active ?? "ollama";
|
|
@@ -686675,7 +686862,7 @@ __export(exports_plugins, {
|
|
|
686675
686862
|
VALID_UPDATE_SCOPES: () => VALID_UPDATE_SCOPES,
|
|
686676
686863
|
VALID_INSTALLABLE_SCOPES: () => VALID_INSTALLABLE_SCOPES
|
|
686677
686864
|
});
|
|
686678
|
-
import { basename as basename61, dirname as
|
|
686865
|
+
import { basename as basename61, dirname as dirname79 } from "path";
|
|
686679
686866
|
function handleMarketplaceError(error40, action3) {
|
|
686680
686867
|
logError2(error40);
|
|
686681
686868
|
cliError(`${figures_default.cross} Failed to ${action3}: ${errorMessage2(error40)}`);
|
|
@@ -686708,9 +686895,9 @@ async function pluginValidateHandler(manifestPath5, options2) {
|
|
|
686708
686895
|
printValidationResult(result);
|
|
686709
686896
|
let contentResults = [];
|
|
686710
686897
|
if (result.fileType === "plugin") {
|
|
686711
|
-
const manifestDir =
|
|
686898
|
+
const manifestDir = dirname79(result.filePath);
|
|
686712
686899
|
if (basename61(manifestDir) === ".ur-plugin") {
|
|
686713
|
-
contentResults = await validatePluginContents(
|
|
686900
|
+
contentResults = await validatePluginContents(dirname79(manifestDir));
|
|
686714
686901
|
for (const r of contentResults) {
|
|
686715
686902
|
console.log(`Validating ${r.fileType}: ${r.filePath}
|
|
686716
686903
|
`);
|
|
@@ -687824,7 +688011,7 @@ async function update() {
|
|
|
687824
688011
|
logEvent("tengu_update_check", {});
|
|
687825
688012
|
const diagnostic = await getDoctorDiagnostic();
|
|
687826
688013
|
const result = await checkUpgradeStatus({
|
|
687827
|
-
currentVersion: "1.25.
|
|
688014
|
+
currentVersion: "1.25.3",
|
|
687828
688015
|
packageName: UR_AGENT_PACKAGE_NAME,
|
|
687829
688016
|
installationType: diagnostic.installationType,
|
|
687830
688017
|
latestVersion: () => getLatestNpmPackageVersion(UR_AGENT_PACKAGE_NAME)
|
|
@@ -689070,7 +689257,7 @@ ${customInstructions}` : customInstructions;
|
|
|
689070
689257
|
}
|
|
689071
689258
|
}
|
|
689072
689259
|
logForDiagnosticsNoPII("info", "started", {
|
|
689073
|
-
version: "1.25.
|
|
689260
|
+
version: "1.25.3",
|
|
689074
689261
|
is_native_binary: isInBundledMode()
|
|
689075
689262
|
});
|
|
689076
689263
|
registerCleanup(async () => {
|
|
@@ -689854,7 +690041,7 @@ Usage: ur --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
689854
690041
|
pendingHookMessages
|
|
689855
690042
|
}, renderAndRun);
|
|
689856
690043
|
}
|
|
689857
|
-
}).version("1.25.
|
|
690044
|
+
}).version("1.25.3 (UR-AGENT)", "-v, --version", "Output the version number");
|
|
689858
690045
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
689859
690046
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
689860
690047
|
if (canUserConfigureAdvisor()) {
|
|
@@ -690731,7 +690918,7 @@ if (false) {}
|
|
|
690731
690918
|
async function main2() {
|
|
690732
690919
|
const args = process.argv.slice(2);
|
|
690733
690920
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
690734
|
-
console.log(`${"1.25.
|
|
690921
|
+
console.log(`${"1.25.3"} (UR-AGENT)`);
|
|
690735
690922
|
return;
|
|
690736
690923
|
}
|
|
690737
690924
|
if (args[0] === "a2a" && args[1] === "serve" && !args.includes("--help") && !args.includes("-h")) {
|