@jait/gateway 0.1.334 → 0.1.337
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elevated-tools.d.ts","sourceRoot":"","sources":["../../src/tools/elevated-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAE1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,KAAK,EAAe,cAAc,EAAc,MAAM,gBAAgB,CAAC;AAE9E,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,kBAAkB;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;IACtC,KAAK,CAAC,EAAE;QAAE,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IAC9C,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI,CAAC;IAC3D,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC;IACjG,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;CACxC;AAED,MAAM,MAAM,oBAAoB,GAAG,CACjC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,wBAAwB,KAC9B,kBAAkB,CAAC;AAExB,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,EAAE,MAAM,MAAM,CAAC,QAAQ,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;CACnC;
|
|
1
|
+
{"version":3,"file":"elevated-tools.d.ts","sourceRoot":"","sources":["../../src/tools/elevated-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAE1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,KAAK,EAAe,cAAc,EAAc,MAAM,gBAAgB,CAAC;AAE9E,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,kBAAkB;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;IACtC,KAAK,CAAC,EAAE;QAAE,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IAC9C,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI,CAAC;IAC3D,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC;IACjG,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;CACxC;AAED,MAAM,MAAM,oBAAoB,GAAG,CACjC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,wBAAwB,KAC9B,kBAAkB,CAAC;AAExB,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,EAAE,MAAM,MAAM,CAAC,QAAQ,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;CACnC;AAmPD,wBAAgB,qBAAqB,CACnC,WAAW,CAAC,EAAE,kBAAkB,EAChC,YAAY,GAAE,oBAA0C,EACxD,OAAO,GAAE,mBAAwB,GAChC,cAAc,CAAC,gBAAgB,CAAC,CA8FlC"}
|
|
@@ -11,7 +11,7 @@ function truncateOutput(value) {
|
|
|
11
11
|
function sanitizeStreamChunk(chunk) {
|
|
12
12
|
return chunk.replace(/\r\n/g, "\n").replace(/\r/g, "");
|
|
13
13
|
}
|
|
14
|
-
function
|
|
14
|
+
function buildWindowsCredentialWrapperScript() {
|
|
15
15
|
return [
|
|
16
16
|
"$ErrorActionPreference = 'Stop'",
|
|
17
17
|
"$password = ConvertTo-SecureString $env:JAIT_ELEVATED_PASSWORD -AsPlainText -Force",
|
|
@@ -29,8 +29,57 @@ function buildWindowsWrapperScript() {
|
|
|
29
29
|
"}",
|
|
30
30
|
].join("\n");
|
|
31
31
|
}
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
/**
|
|
33
|
+
* Builds a PowerShell script that uses Start-Process -Verb RunAs to trigger
|
|
34
|
+
* the native Windows UAC dialog for elevation, without requiring explicit
|
|
35
|
+
* credentials. Output is captured via temp files since -Verb RunAs cannot
|
|
36
|
+
* use -RedirectStandardOutput/-RedirectStandardError directly.
|
|
37
|
+
*/
|
|
38
|
+
function buildWindowsUacWrapperScript() {
|
|
39
|
+
return [
|
|
40
|
+
"$ErrorActionPreference = 'Stop'",
|
|
41
|
+
"$id = [guid]::NewGuid().ToString()",
|
|
42
|
+
"$base = Join-Path $env:TEMP \"jait-uac-$id\"",
|
|
43
|
+
"$stdoutPath = \"${base}-out.txt\"",
|
|
44
|
+
"$stderrPath = \"${base}-err.txt\"",
|
|
45
|
+
"$exitCodePath = \"${base}-ec.txt\"",
|
|
46
|
+
"$cmdPath = \"${base}-cmd.txt\"",
|
|
47
|
+
"$scriptPath = \"${base}.ps1\"",
|
|
48
|
+
"",
|
|
49
|
+
"# Write the command to a file (passed base64-encoded to avoid quoting issues)",
|
|
50
|
+
"[System.Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($env:JAIT_ELEVATED_COMMAND_B64)) | Set-Content -Path $cmdPath -Encoding UTF8 -NoNewline",
|
|
51
|
+
"",
|
|
52
|
+
"# Build the inner elevated script that reads the command from file",
|
|
53
|
+
"$cwd = $env:JAIT_ELEVATED_CWD -replace \"'\", \"''\"",
|
|
54
|
+
"$lines = @(",
|
|
55
|
+
" \"`$ErrorActionPreference = 'Continue'\"",
|
|
56
|
+
" \"Set-Location -LiteralPath '\" + $cwd + \"'\"",
|
|
57
|
+
" \"`$cmd = Get-Content -Path '\" + ($cmdPath -replace \"'\", \"''\") + \"' -Raw\"",
|
|
58
|
+
" 'try {'",
|
|
59
|
+
" \" `$output = Invoke-Expression `$cmd 2>'\" + ($stderrPath -replace \"'\", \"''\") + \"'\"",
|
|
60
|
+
" \" `$output | Out-File -FilePath '\" + ($stdoutPath -replace \"'\", \"''\") + \"' -Encoding utf8\"",
|
|
61
|
+
" \" if (`$null -eq `$LASTEXITCODE) { 0 } else { `$LASTEXITCODE } | Out-File -FilePath '\" + ($exitCodePath -replace \"'\", \"''\") + \"' -Encoding utf8\"",
|
|
62
|
+
" '} catch {'",
|
|
63
|
+
" \" `$_.Exception.Message | Out-File -FilePath '\" + ($stderrPath -replace \"'\", \"''\") + \"' -Encoding utf8 -Append\"",
|
|
64
|
+
" \" 1 | Out-File -FilePath '\" + ($exitCodePath -replace \"'\", \"''\") + \"' -Encoding utf8\"",
|
|
65
|
+
" '}'",
|
|
66
|
+
")",
|
|
67
|
+
"$lines | Set-Content -Path $scriptPath -Encoding UTF8",
|
|
68
|
+
"",
|
|
69
|
+
"try {",
|
|
70
|
+
" $proc = Start-Process -Verb RunAs -FilePath 'powershell.exe' -ArgumentList @('-NoProfile', '-NonInteractive', '-ExecutionPolicy', 'Bypass', '-File', $scriptPath) -Wait -PassThru -WindowStyle Hidden",
|
|
71
|
+
" $stdout = if (Test-Path $stdoutPath) { Get-Content -Raw $stdoutPath } else { '' }",
|
|
72
|
+
" $stderr = if (Test-Path $stderrPath) { Get-Content -Raw $stderrPath } else { '' }",
|
|
73
|
+
" $ec = if (Test-Path $exitCodePath) { (Get-Content -Raw $exitCodePath).Trim() -as [int] } else { $null }",
|
|
74
|
+
" if ($null -eq $ec) { $ec = $proc.ExitCode }",
|
|
75
|
+
" [pscustomobject]@{ exitCode = $ec; stdout = $stdout; stderr = $stderr } | ConvertTo-Json -Compress",
|
|
76
|
+
"} finally {",
|
|
77
|
+
" Remove-Item -Path \"${base}*\" -Force -ErrorAction SilentlyContinue",
|
|
78
|
+
"}",
|
|
79
|
+
].join("\n");
|
|
80
|
+
}
|
|
81
|
+
function buildWindowsCredentialSpawn(input) {
|
|
82
|
+
const script = buildWindowsCredentialWrapperScript();
|
|
34
83
|
return {
|
|
35
84
|
command: "powershell.exe",
|
|
36
85
|
args: ["-NoProfile", "-NonInteractive", "-EncodedCommand", Buffer.from(script, "utf16le").toString("base64")],
|
|
@@ -43,16 +92,33 @@ function buildWindowsSpawn(input) {
|
|
|
43
92
|
},
|
|
44
93
|
};
|
|
45
94
|
}
|
|
95
|
+
function buildWindowsUacSpawn(input) {
|
|
96
|
+
const script = buildWindowsUacWrapperScript();
|
|
97
|
+
return {
|
|
98
|
+
command: "powershell.exe",
|
|
99
|
+
args: ["-NoProfile", "-NonInteractive", "-EncodedCommand", Buffer.from(script, "utf16le").toString("base64")],
|
|
100
|
+
env: {
|
|
101
|
+
...process.env,
|
|
102
|
+
JAIT_ELEVATED_COMMAND_B64: Buffer.from(input.command, "utf8").toString("base64"),
|
|
103
|
+
JAIT_ELEVATED_CWD: input.cwd,
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
}
|
|
46
107
|
async function runElevatedCommand(input, context, spawnFactory) {
|
|
47
108
|
return new Promise((resolve) => {
|
|
48
109
|
const windows = input.platform === "win32";
|
|
49
110
|
const spawnSpec = windows
|
|
50
|
-
?
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
111
|
+
? (input.useUac
|
|
112
|
+
? buildWindowsUacSpawn({
|
|
113
|
+
command: input.command,
|
|
114
|
+
cwd: input.cwd,
|
|
115
|
+
})
|
|
116
|
+
: buildWindowsCredentialSpawn({
|
|
117
|
+
command: input.command,
|
|
118
|
+
cwd: input.cwd,
|
|
119
|
+
username: input.username,
|
|
120
|
+
password: input.password,
|
|
121
|
+
}))
|
|
56
122
|
: {
|
|
57
123
|
command: input.isElevatedAlready ? "sh" : "sudo",
|
|
58
124
|
args: input.isElevatedAlready
|
|
@@ -138,7 +204,7 @@ async function runElevatedCommand(input, context, spawnFactory) {
|
|
|
138
204
|
export function createElevatedRunTool(secretInput, spawnFactory = defaultSpawnFactory, runtime = {}) {
|
|
139
205
|
return {
|
|
140
206
|
name: "elevated.run",
|
|
141
|
-
description: "Run a local command with elevated privileges. On Linux and macOS, this uses sudo. On Windows,
|
|
207
|
+
description: "Run a local command with elevated privileges. On Linux and macOS, this uses sudo. On Windows, if no username is provided the native UAC dialog is shown for one-click elevation; if a username is supplied the command runs under that account with credential-based elevation. Passwords (when needed) are requested through a secret prompt and are never sent to the LLM or included in tool arguments.",
|
|
142
208
|
tier: "standard",
|
|
143
209
|
category: "os",
|
|
144
210
|
source: "builtin",
|
|
@@ -148,7 +214,7 @@ export function createElevatedRunTool(secretInput, spawnFactory = defaultSpawnFa
|
|
|
148
214
|
type: "object",
|
|
149
215
|
properties: {
|
|
150
216
|
command: { type: "string", description: "Shell command to run with elevated privileges" },
|
|
151
|
-
username: { type: "string", description: "Windows only: administrator account username
|
|
217
|
+
username: { type: "string", description: "Windows only: administrator account username. When omitted on Windows, the native UAC dialog is shown instead." },
|
|
152
218
|
cwd: { type: "string", description: "Working directory for the command. Defaults to the workspace root." },
|
|
153
219
|
timeoutMs: { type: "number", description: "Execution timeout in milliseconds, default 30000" },
|
|
154
220
|
reason: { type: "string", description: "Short human-readable reason shown in the password prompt context." },
|
|
@@ -163,11 +229,9 @@ export function createElevatedRunTool(secretInput, spawnFactory = defaultSpawnFa
|
|
|
163
229
|
const currentUid = runtime.getuid?.() ?? (typeof process.getuid === "function" ? process.getuid() : undefined);
|
|
164
230
|
const isElevatedAlready = currentPlatform !== "win32" && currentUid === 0;
|
|
165
231
|
const windowsUsername = input.username?.trim();
|
|
166
|
-
|
|
167
|
-
return { ok: false, message: "On Windows, elevated.run requires `username` for an administrator account" };
|
|
168
|
-
}
|
|
232
|
+
const useUac = currentPlatform === "win32" && !windowsUsername;
|
|
169
233
|
let password = null;
|
|
170
|
-
if (!isElevatedAlready) {
|
|
234
|
+
if (!isElevatedAlready && !useUac) {
|
|
171
235
|
if (!secretInput)
|
|
172
236
|
return { ok: false, message: "Secret input service is unavailable" };
|
|
173
237
|
password = await secretInput.requestSecret({
|
|
@@ -195,6 +259,7 @@ export function createElevatedRunTool(secretInput, spawnFactory = defaultSpawnFa
|
|
|
195
259
|
password,
|
|
196
260
|
isElevatedAlready,
|
|
197
261
|
platform: currentPlatform,
|
|
262
|
+
useUac,
|
|
198
263
|
}, context, spawnFactory);
|
|
199
264
|
let stdout = result.stdout.trim();
|
|
200
265
|
let stderr = result.stderr.trim();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elevated-tools.js","sourceRoot":"","sources":["../../src/tools/elevated-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAiC,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAgCnC,SAAS,mBAAmB,CAC1B,OAAe,EACf,IAAc,EACd,OAAiC;IAEjC,OAAO,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,cAAc,CAAC,KAAa;IACnC,IAAI,KAAK,CAAC,MAAM,GAAG,OAAO;QAAE,OAAO,mBAAmB,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9E,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa;IACxC,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,
|
|
1
|
+
{"version":3,"file":"elevated-tools.js","sourceRoot":"","sources":["../../src/tools/elevated-tools.ts"],"names":[],"mappings":"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"}
|