4runr-os 2.9.95 → 2.9.98
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/dist/npm-spawn.d.ts +2 -0
- package/dist/npm-spawn.d.ts.map +1 -0
- package/dist/npm-spawn.js +22 -0
- package/dist/npm-spawn.js.map +1 -0
- package/dist/security/package-integrity.d.ts +2 -2
- package/dist/security/package-integrity.d.ts.map +1 -1
- package/dist/security/package-integrity.js +22 -23
- package/dist/security/package-integrity.js.map +1 -1
- package/dist/version-check.d.ts.map +1 -1
- package/dist/version-check.js +5 -13
- package/dist/version-check.js.map +1 -1
- package/mk3-tui/src/app.rs +10 -6
- package/mk3-tui/src/debug_log.rs +124 -0
- package/mk3-tui/src/ui/connection_portal.rs +9 -7
- package/package.json +2 -2
- package/src/security/package-integrity.ts +28 -26
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"npm-spawn.d.ts","sourceRoot":"","sources":["../src/npm-spawn.ts"],"names":[],"mappings":"AAWA,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,oDAa1C"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spawn npm in a way that works on Windows without shell: true.
|
|
3
|
+
* Node's spawn/spawnSync cannot reliably run .cmd/.bat files; using the same
|
|
4
|
+
* Node that runs 4r to execute npm-cli.js matches `npm.cmd` behavior.
|
|
5
|
+
*/
|
|
6
|
+
import { spawnSync } from 'child_process';
|
|
7
|
+
import * as fs from 'fs';
|
|
8
|
+
import * as path from 'path';
|
|
9
|
+
const npmStdio = ['ignore', 'pipe', 'pipe'];
|
|
10
|
+
export function spawnNpmSync(args) {
|
|
11
|
+
const opts = { encoding: 'utf-8', stdio: npmStdio };
|
|
12
|
+
if (process.platform === 'win32') {
|
|
13
|
+
const nodeDir = path.dirname(process.execPath);
|
|
14
|
+
const npmCli = path.join(nodeDir, 'node_modules', 'npm', 'bin', 'npm-cli.js');
|
|
15
|
+
if (fs.existsSync(npmCli)) {
|
|
16
|
+
return spawnSync(process.execPath, [npmCli, ...args], opts);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
const cmd = process.platform === 'win32' ? 'npm.cmd' : 'npm';
|
|
20
|
+
return spawnSync(cmd, args, opts);
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=npm-spawn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"npm-spawn.js","sourceRoot":"","sources":["../src/npm-spawn.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,QAAQ,GAA+B,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAExE,MAAM,UAAU,YAAY,CAAC,IAAc;IACzC,MAAM,IAAI,GAAG,EAAE,QAAQ,EAAE,OAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAE7D,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;QAC9E,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,OAAO,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;IAC7D,OAAO,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC"}
|
|
@@ -15,8 +15,8 @@ export declare function verifyPackageIntegrity(tarballPath: string, expectedInte
|
|
|
15
15
|
*/
|
|
16
16
|
export declare function verifyInstalledVersion(packageName: string, expectedVersion: string): boolean;
|
|
17
17
|
/**
|
|
18
|
-
* Safe npm install with integrity verification
|
|
19
|
-
* On Windows
|
|
18
|
+
* Safe npm install with integrity verification.
|
|
19
|
+
* On Windows, npm is invoked via `node .../npm-cli.js` (see npm-spawn.ts) so spawn does not rely on .cmd.
|
|
20
20
|
* When version is 'latest', installs whatever the registry tags as latest (avoids ETARGET for unpublished versions).
|
|
21
21
|
*/
|
|
22
22
|
export declare function safeNpmInstall(packageName: string, version: string): {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-integrity.d.ts","sourceRoot":"","sources":["../../src/security/package-integrity.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"package-integrity.d.ts","sourceRoot":"","sources":["../../src/security/package-integrity.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAqBvF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAkB9F;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAqB5F;AAwCD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CA2DzG"}
|
|
@@ -3,10 +3,9 @@
|
|
|
3
3
|
* Verifies npm package integrity before updates
|
|
4
4
|
*/
|
|
5
5
|
import * as crypto from 'crypto';
|
|
6
|
-
import { spawnSync } from 'child_process';
|
|
7
6
|
import * as fs from 'fs';
|
|
7
|
+
import { spawnNpmSync } from '../npm-spawn.js';
|
|
8
8
|
import { sanitizePackageName } from './validation.js';
|
|
9
|
-
const npmCmd = process.platform === 'win32' ? 'npm.cmd' : 'npm';
|
|
10
9
|
/**
|
|
11
10
|
* Get package integrity hash from npm registry
|
|
12
11
|
*/
|
|
@@ -17,11 +16,8 @@ export function getPackageIntegrity(packageName, version) {
|
|
|
17
16
|
if (!validation.valid || !validation.sanitized) {
|
|
18
17
|
throw new Error(`Invalid package name: ${validation.error}`);
|
|
19
18
|
}
|
|
20
|
-
// Get package info from npm (includes integrity hash);
|
|
21
|
-
const result =
|
|
22
|
-
encoding: 'utf-8',
|
|
23
|
-
stdio: ['ignore', 'pipe', 'pipe']
|
|
24
|
-
});
|
|
19
|
+
// Get package info from npm (includes integrity hash); spawnNpmSync on Windows
|
|
20
|
+
const result = spawnNpmSync(['view', `${validation.sanitized}@${version}`, 'dist.integrity', '--json']);
|
|
25
21
|
if (result.status !== 0 || !result.stdout) {
|
|
26
22
|
return null;
|
|
27
23
|
}
|
|
@@ -61,10 +57,7 @@ export function verifyInstalledVersion(packageName, expectedVersion) {
|
|
|
61
57
|
if (!validation.valid || !validation.sanitized) {
|
|
62
58
|
return false;
|
|
63
59
|
}
|
|
64
|
-
const result =
|
|
65
|
-
encoding: 'utf-8',
|
|
66
|
-
stdio: ['ignore', 'pipe', 'pipe']
|
|
67
|
-
});
|
|
60
|
+
const result = spawnNpmSync(['list', '-g', validation.sanitized, '--depth=0', '--json']);
|
|
68
61
|
if (result.status !== 0 || !result.stdout) {
|
|
69
62
|
return false;
|
|
70
63
|
}
|
|
@@ -79,16 +72,26 @@ export function verifyInstalledVersion(packageName, expectedVersion) {
|
|
|
79
72
|
/** Build error message from npm spawn result (include both stdout and stderr) */
|
|
80
73
|
function npmErrorResult(result) {
|
|
81
74
|
const toStr = (x) => (x == null ? '' : typeof x === 'string' ? x : x.toString('utf-8'));
|
|
75
|
+
const parts = [];
|
|
76
|
+
if (result.error) {
|
|
77
|
+
parts.push(result.error.message);
|
|
78
|
+
}
|
|
82
79
|
const out = [toStr(result.stderr), toStr(result.stdout)].filter(Boolean).join('\n').trim();
|
|
83
|
-
|
|
80
|
+
if (out) {
|
|
81
|
+
parts.push(out);
|
|
82
|
+
}
|
|
83
|
+
if (parts.length > 0) {
|
|
84
|
+
return parts.join('\n');
|
|
85
|
+
}
|
|
86
|
+
if (result.status === null) {
|
|
87
|
+
return 'npm did not return an exit code (spawn may have failed — try running npm from an elevated or normal shell, or install Node from nodejs.org so npm-cli.js sits next to node.exe).';
|
|
88
|
+
}
|
|
89
|
+
return `npm exited with code ${result.status}`;
|
|
84
90
|
}
|
|
85
91
|
/** Resolve a tag (e.g. 'latest') to a concrete version from the registry */
|
|
86
92
|
function resolveTagVersion(packageName, tag) {
|
|
87
93
|
try {
|
|
88
|
-
const result =
|
|
89
|
-
encoding: 'utf-8',
|
|
90
|
-
stdio: ['ignore', 'pipe', 'pipe'],
|
|
91
|
-
});
|
|
94
|
+
const result = spawnNpmSync(['view', `${packageName}@${tag}`, 'version']);
|
|
92
95
|
if (result.status === 0 && result.stdout) {
|
|
93
96
|
return result.stdout.trim().replace(/"/g, '') || null;
|
|
94
97
|
}
|
|
@@ -99,8 +102,8 @@ function resolveTagVersion(packageName, tag) {
|
|
|
99
102
|
}
|
|
100
103
|
}
|
|
101
104
|
/**
|
|
102
|
-
* Safe npm install with integrity verification
|
|
103
|
-
* On Windows
|
|
105
|
+
* Safe npm install with integrity verification.
|
|
106
|
+
* On Windows, npm is invoked via `node .../npm-cli.js` (see npm-spawn.ts) so spawn does not rely on .cmd.
|
|
104
107
|
* When version is 'latest', installs whatever the registry tags as latest (avoids ETARGET for unpublished versions).
|
|
105
108
|
*/
|
|
106
109
|
export function safeNpmInstall(packageName, version) {
|
|
@@ -109,11 +112,7 @@ export function safeNpmInstall(packageName, version) {
|
|
|
109
112
|
if (!validation.valid || !validation.sanitized) {
|
|
110
113
|
return { success: false, error: `Invalid package name: ${validation.error}` };
|
|
111
114
|
}
|
|
112
|
-
const
|
|
113
|
-
encoding: 'utf-8',
|
|
114
|
-
stdio: ['ignore', 'pipe', 'pipe'],
|
|
115
|
-
};
|
|
116
|
-
const runInstall = (args) => spawnSync(npmCmd, args, spawnOpts);
|
|
115
|
+
const runInstall = (args) => spawnNpmSync(args);
|
|
117
116
|
// When using 'latest', we verify against the resolved version after install
|
|
118
117
|
const versionToVerify = version === 'latest' ? null : version;
|
|
119
118
|
// Get integrity hash BEFORE installing
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-integrity.js","sourceRoot":"","sources":["../../src/security/package-integrity.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,
|
|
1
|
+
{"version":3,"file":"package-integrity.js","sourceRoot":"","sources":["../../src/security/package-integrity.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version-check.d.ts","sourceRoot":"","sources":["../src/version-check.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"version-check.d.ts","sourceRoot":"","sources":["../src/version-check.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH,UAAU,WAAW;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;CACtB;AA4FD;;GAEG;AACH,wBAAsB,eAAe,CAAC,WAAW,GAAE,MAAmB,GAAG,OAAO,CAAC,WAAW,CAAC,CAM5F;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAE,MAAmB,GAAG,IAAI,CAGpG;AAgGD;;;GAGG;AACH,wBAAsB,UAAU,CAAC,WAAW,GAAE,MAAmB,GAAG,OAAO,CAAC,KAAK,CAAC,CA2EjF;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,WAAW,GAAE,MAAmB,EAAE,iBAAiB,GAAE,OAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBvH"}
|
package/dist/version-check.js
CHANGED
|
@@ -7,20 +7,16 @@ import * as fs from 'fs';
|
|
|
7
7
|
import * as path from 'path';
|
|
8
8
|
import { fileURLToPath } from 'url';
|
|
9
9
|
import { dirname } from 'path';
|
|
10
|
+
import { spawnNpmSync } from './npm-spawn.js';
|
|
10
11
|
const __filename = fileURLToPath(import.meta.url);
|
|
11
12
|
const __dirname = dirname(__filename);
|
|
12
|
-
const npmCmd = process.platform === 'win32' ? 'npm.cmd' : 'npm';
|
|
13
13
|
/**
|
|
14
14
|
* Get current installed version from package.json
|
|
15
15
|
*/
|
|
16
16
|
function getCurrentVersion() {
|
|
17
17
|
try {
|
|
18
|
-
//
|
|
19
|
-
const
|
|
20
|
-
const result = spawnSync(npmCmd, ['list', '-g', '4runr-os', '--depth=0', '--json'], {
|
|
21
|
-
encoding: 'utf-8',
|
|
22
|
-
stdio: ['ignore', 'pipe', 'pipe']
|
|
23
|
-
});
|
|
18
|
+
// Installed global version via npm list (spawnNpmSync → npm-cli.js on Windows)
|
|
19
|
+
const result = spawnNpmSync(['list', '-g', '4runr-os', '--depth=0', '--json']);
|
|
24
20
|
if (result.status === 0 && result.stdout) {
|
|
25
21
|
const data = JSON.parse(result.stdout);
|
|
26
22
|
const installedVersion = data?.dependencies?.['4runr-os']?.version;
|
|
@@ -74,12 +70,8 @@ async function getLatestVersion(packageName) {
|
|
|
74
70
|
console.error(`Invalid package name: ${validation.error}`);
|
|
75
71
|
return null;
|
|
76
72
|
}
|
|
77
|
-
//
|
|
78
|
-
const
|
|
79
|
-
const result = spawnSync(npmCmd, ['view', validation.sanitized, 'version'], {
|
|
80
|
-
encoding: 'utf-8',
|
|
81
|
-
stdio: ['ignore', 'pipe', 'pipe']
|
|
82
|
-
});
|
|
73
|
+
// spawnNpmSync (node + npm-cli.js on Windows) instead of execSync
|
|
74
|
+
const result = spawnNpmSync(['view', validation.sanitized, 'version']);
|
|
83
75
|
if (result.status === 0 && result.stdout) {
|
|
84
76
|
return result.stdout.trim() || null;
|
|
85
77
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version-check.js","sourceRoot":"","sources":["../src/version-check.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"version-check.js","sourceRoot":"","sources":["../src/version-check.ts"],"names":[],"mappings":"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"}
|
package/mk3-tui/src/app.rs
CHANGED
|
@@ -1506,11 +1506,13 @@ impl App {
|
|
|
1506
1506
|
} else {
|
|
1507
1507
|
// Open detail view
|
|
1508
1508
|
if let Some(run) = self.state.run_manager.selected_run() {
|
|
1509
|
-
|
|
1509
|
+
let run_id = run.id.clone();
|
|
1510
|
+
let run_name = run.name.clone();
|
|
1511
|
+
self.add_log(format!("[RUN] Viewing run: {}", run_name));
|
|
1510
1512
|
self.state.run_manager.toggle_detail_view();
|
|
1511
1513
|
if self.state.operation_mode == OperationMode::Connected {
|
|
1512
1514
|
if let Some(ws) = ws_client {
|
|
1513
|
-
let data = serde_json::json!({ "runId":
|
|
1515
|
+
let data = serde_json::json!({ "runId": run_id });
|
|
1514
1516
|
if let Ok(id) = ws.send_command("run.get", Some(data)) {
|
|
1515
1517
|
self.state.pending_run_get_id = Some(id);
|
|
1516
1518
|
}
|
|
@@ -1716,20 +1718,22 @@ impl App {
|
|
|
1716
1718
|
self.add_log("[AGENT] Connect to Gateway first to run on the server (key x).".to_string());
|
|
1717
1719
|
} else if self.state.agent_list.agents.is_empty() {
|
|
1718
1720
|
self.add_log("[AGENT] No agents in list.".to_string());
|
|
1719
|
-
} else if let Some(
|
|
1721
|
+
} else if let Some((agent_name, agent_model)) =
|
|
1722
|
+
self.get_selected_agent().map(|a| (a.name.clone(), a.model.clone()))
|
|
1723
|
+
{
|
|
1720
1724
|
if let Some(ws) = ws_client {
|
|
1721
|
-
let name = format!("TUI: {}",
|
|
1725
|
+
let name = format!("TUI: {}", agent_name);
|
|
1722
1726
|
let input = serde_json::json!({
|
|
1723
1727
|
"agent_id": "test",
|
|
1724
1728
|
"data": {
|
|
1725
|
-
"prompt": format!("Quick run for local agent profile '{}' (model {}).",
|
|
1729
|
+
"prompt": format!("Quick run for local agent profile '{}' (model {}).", agent_name, agent_model)
|
|
1726
1730
|
}
|
|
1727
1731
|
});
|
|
1728
1732
|
let data = serde_json::json!({ "name": name, "input": input });
|
|
1729
1733
|
match ws.send_command("run.quick", Some(data)) {
|
|
1730
1734
|
Ok(id) => {
|
|
1731
1735
|
self.state.pending_run_quick_id = Some(id);
|
|
1732
|
-
self.add_log(format!("[AGENT] Queued Gateway run for profile '{}' (x)",
|
|
1736
|
+
self.add_log(format!("[AGENT] Queued Gateway run for profile '{}' (x)", agent_name));
|
|
1733
1737
|
}
|
|
1734
1738
|
Err(e) => self.add_log(format!("[ERROR] run.quick: {}", e)),
|
|
1735
1739
|
}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
//! File-based debug logger for Setup Portal.
|
|
2
|
+
//! When SETUP_PORTAL_DEBUG=1 or SETUP_PORTAL_DEBUG_FILE is set, all inputs and render state
|
|
3
|
+
//! are written to a file so you can capture the full trace when reproducing the navigation bug.
|
|
4
|
+
//!
|
|
5
|
+
//! Usage:
|
|
6
|
+
//! set SETUP_PORTAL_DEBUG_FILE=setup-portal-debug.log
|
|
7
|
+
//! mk3-tui (or 4r)
|
|
8
|
+
//! Then open Setup Portal (windowed), reproduce the bug, exit. Inspect setup-portal-debug.log.
|
|
9
|
+
|
|
10
|
+
use std::io::Write;
|
|
11
|
+
use std::sync::Mutex;
|
|
12
|
+
use std::sync::OnceLock;
|
|
13
|
+
use std::time::{SystemTime, UNIX_EPOCH};
|
|
14
|
+
|
|
15
|
+
fn enabled() -> bool {
|
|
16
|
+
std::env::var("SETUP_PORTAL_DEBUG").as_deref() == Ok("1")
|
|
17
|
+
|| std::env::var("SETUP_PORTAL_DEBUG_FILE").is_ok()
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
fn path() -> String {
|
|
21
|
+
std::env::var("SETUP_PORTAL_DEBUG_FILE")
|
|
22
|
+
.unwrap_or_else(|_| "setup-portal-debug.log".to_string())
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
static FILE: OnceLock<Mutex<Option<std::io::BufWriter<std::fs::File>>>> = OnceLock::new();
|
|
26
|
+
|
|
27
|
+
fn ensure_open() -> bool {
|
|
28
|
+
if !enabled() {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
let mutex = FILE.get_or_init(|| Mutex::new(None));
|
|
32
|
+
let mut guard = mutex.lock().unwrap();
|
|
33
|
+
if guard.is_none() {
|
|
34
|
+
let path = path();
|
|
35
|
+
match std::fs::OpenOptions::new()
|
|
36
|
+
.create(true)
|
|
37
|
+
.append(true)
|
|
38
|
+
.open(&path)
|
|
39
|
+
{
|
|
40
|
+
Ok(file_handle) => {
|
|
41
|
+
// Resolve full path so user always knows where the log is
|
|
42
|
+
let full_path: String = std::path::Path::new(&path)
|
|
43
|
+
.canonicalize()
|
|
44
|
+
.map(|p| p.display().to_string())
|
|
45
|
+
.or_else(|_| std::env::current_dir().map(|cwd| cwd.join(&path).display().to_string()))
|
|
46
|
+
.unwrap_or_else(|_| path.clone());
|
|
47
|
+
let _ = writeln!(
|
|
48
|
+
std::io::stderr(),
|
|
49
|
+
"[SETUP_PORTAL_DEBUG] Log file: {}",
|
|
50
|
+
full_path
|
|
51
|
+
);
|
|
52
|
+
let mut w = std::io::BufWriter::new(file_handle);
|
|
53
|
+
let banner = format!("{} === Setup Portal debug log opened: {} ===\n", timestamp(), full_path);
|
|
54
|
+
let _ = w.write_all(banner.as_bytes());
|
|
55
|
+
let _ = w.flush();
|
|
56
|
+
*guard = Some(w);
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
Err(e) => {
|
|
60
|
+
let _ = writeln!(
|
|
61
|
+
std::io::stderr(),
|
|
62
|
+
"[SETUP_PORTAL_DEBUG] Failed to open \"{}\": {}",
|
|
63
|
+
path, e
|
|
64
|
+
);
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
true
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
fn log_raw(msg: &str) {
|
|
73
|
+
if !enabled() {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
if !ensure_open() {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
let mutex = FILE.get().unwrap();
|
|
80
|
+
let mut guard = mutex.lock().unwrap();
|
|
81
|
+
if let Some(ref mut w) = *guard {
|
|
82
|
+
let _ = w.write_all(msg.as_bytes());
|
|
83
|
+
let _ = w.write_all(b"\n");
|
|
84
|
+
let _ = w.flush();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
fn timestamp() -> String {
|
|
89
|
+
SystemTime::now()
|
|
90
|
+
.duration_since(UNIX_EPOCH)
|
|
91
|
+
.map(|d| format!("{}.{:03}", d.as_secs(), d.subsec_millis()))
|
|
92
|
+
.unwrap_or_else(|_| "?.???".to_string())
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/// Log a line with timestamp. Call from main or setup_portal when debug file is enabled.
|
|
96
|
+
pub fn log(msg: &str) {
|
|
97
|
+
log_raw(&format!("{} {}", timestamp(), msg));
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/// Log screen switch (enter/leave Setup Portal).
|
|
101
|
+
pub fn log_screen(from: &str, to: &str) {
|
|
102
|
+
log(&format!("SCREEN {} -> {}", from, to));
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/// Log an input event (key, mouse, resize).
|
|
106
|
+
pub fn log_input(kind: &str, detail: &str) {
|
|
107
|
+
log(&format!("INPUT {} {}", kind, detail));
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/// Log render state (dims, rects, selected option). Throttled by caller.
|
|
111
|
+
pub fn log_render(msg: &str) {
|
|
112
|
+
log(&format!("RENDER {}", msg));
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/// Log flicker-debug: when we clear and when we finish draw (to correlate with visible flicker).
|
|
116
|
+
/// Writes to debug file when SETUP_PORTAL_DEBUG or SETUP_PORTAL_DEBUG_FILE is set.
|
|
117
|
+
pub fn log_flicker_debug(event: &str, detail: &str) {
|
|
118
|
+
let msg = format!("FLICKER {} {}", event, detail);
|
|
119
|
+
log(&msg);
|
|
120
|
+
// Also to stderr when file debug enabled, so "4r 2> setup-debug.log" captures it
|
|
121
|
+
if enabled() {
|
|
122
|
+
let _ = writeln!(std::io::stderr(), "[SETUP_PORTAL_DEBUG] {}", msg);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
@@ -126,16 +126,17 @@ fn render_header(f: &mut Frame, area: Rect, state: &AppState) {
|
|
|
126
126
|
|
|
127
127
|
let portal = &state.connection_portal;
|
|
128
128
|
|
|
129
|
-
let (title, border_color) = if portal.connection_success {
|
|
129
|
+
let (title, border_color): (String, Color) = if portal.connection_success {
|
|
130
130
|
let u = portal.last_successful_url.as_deref().unwrap_or(portal.gateway_url.as_str());
|
|
131
|
-
let
|
|
132
|
-
|
|
131
|
+
let stripped = u.replace("http://", "").replace("https://", "");
|
|
132
|
+
let host = stripped.split('/').next().unwrap_or(u).to_string();
|
|
133
|
+
(format!(" Portal Connection - Connected to {} ", host), NEON_GREEN)
|
|
133
134
|
} else if portal.error.is_some() {
|
|
134
|
-
(" Portal Connection - Error ", ERROR_RED)
|
|
135
|
+
(" Portal Connection - Error ".to_string(), ERROR_RED)
|
|
135
136
|
} else if portal.connecting {
|
|
136
|
-
(" Portal Connection - Connecting... ", AMBER_WARN)
|
|
137
|
+
(" Portal Connection - Connecting... ".to_string(), AMBER_WARN)
|
|
137
138
|
} else {
|
|
138
|
-
(" Portal Connection ", BRAND_PURPLE)
|
|
139
|
+
(" Portal Connection ".to_string(), BRAND_PURPLE)
|
|
139
140
|
};
|
|
140
141
|
|
|
141
142
|
let block = Block::default()
|
|
@@ -182,7 +183,8 @@ fn render_input_fields(f: &mut Frame, area: Rect, state: &AppState) {
|
|
|
182
183
|
let portal = &state.connection_portal;
|
|
183
184
|
if portal.connection_success {
|
|
184
185
|
let url = state.gateway_url.as_deref().or(portal.last_successful_url.as_deref()).unwrap_or(portal.gateway_url.as_str());
|
|
185
|
-
let
|
|
186
|
+
let stripped = url.replace("http://", "").replace("https://", "");
|
|
187
|
+
let short = stripped.split('/').next().unwrap_or(url);
|
|
186
188
|
let block = Block::default().title(" URL ").borders(Borders::ALL).border_style(Style::default().fg(NEON_GREEN)).style(Style::default().bg(BG_PANEL));
|
|
187
189
|
let inner = block.inner(area);
|
|
188
190
|
f.render_widget(block, area);
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "4runr-os",
|
|
3
|
-
"version": "2.9.
|
|
3
|
+
"version": "2.9.98",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"description": "4Runr AI Agent OS - Secure terminal interface for AI agents. v2.9.
|
|
5
|
+
"description": "4Runr AI Agent OS - Secure terminal interface for AI agents. v2.9.98: npm publish bundle — Windows auto-update (npm-spawn / npm-cli.js), copy-mk3 + debug_log.rs, mk3 Rust fixes, vendored gateway. ⚠️ Pre-MVP / Development Phase",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"bin": {
|
|
8
8
|
"4runr": "dist/index.js",
|
|
@@ -4,12 +4,10 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import * as crypto from 'crypto';
|
|
7
|
-
import { spawnSync } from 'child_process';
|
|
8
7
|
import * as fs from 'fs';
|
|
8
|
+
import { spawnNpmSync } from '../npm-spawn.js';
|
|
9
9
|
import { sanitizePackageName } from './validation.js';
|
|
10
10
|
|
|
11
|
-
const npmCmd = process.platform === 'win32' ? 'npm.cmd' : 'npm';
|
|
12
|
-
|
|
13
11
|
/**
|
|
14
12
|
* Get package integrity hash from npm registry
|
|
15
13
|
*/
|
|
@@ -22,11 +20,8 @@ export function getPackageIntegrity(packageName: string, version: string): strin
|
|
|
22
20
|
throw new Error(`Invalid package name: ${validation.error}`);
|
|
23
21
|
}
|
|
24
22
|
|
|
25
|
-
// Get package info from npm (includes integrity hash);
|
|
26
|
-
const result =
|
|
27
|
-
encoding: 'utf-8',
|
|
28
|
-
stdio: ['ignore', 'pipe', 'pipe']
|
|
29
|
-
});
|
|
23
|
+
// Get package info from npm (includes integrity hash); spawnNpmSync on Windows
|
|
24
|
+
const result = spawnNpmSync(['view', `${validation.sanitized}@${version}`, 'dist.integrity', '--json']);
|
|
30
25
|
|
|
31
26
|
if (result.status !== 0 || !result.stdout) {
|
|
32
27
|
return null;
|
|
@@ -73,10 +68,7 @@ export function verifyInstalledVersion(packageName: string, expectedVersion: str
|
|
|
73
68
|
return false;
|
|
74
69
|
}
|
|
75
70
|
|
|
76
|
-
const result =
|
|
77
|
-
encoding: 'utf-8',
|
|
78
|
-
stdio: ['ignore', 'pipe', 'pipe']
|
|
79
|
-
});
|
|
71
|
+
const result = spawnNpmSync(['list', '-g', validation.sanitized, '--depth=0', '--json']);
|
|
80
72
|
|
|
81
73
|
if (result.status !== 0 || !result.stdout) {
|
|
82
74
|
return false;
|
|
@@ -92,19 +84,34 @@ export function verifyInstalledVersion(packageName: string, expectedVersion: str
|
|
|
92
84
|
}
|
|
93
85
|
|
|
94
86
|
/** Build error message from npm spawn result (include both stdout and stderr) */
|
|
95
|
-
function npmErrorResult(result: {
|
|
87
|
+
function npmErrorResult(result: {
|
|
88
|
+
status: number | null;
|
|
89
|
+
error?: Error;
|
|
90
|
+
stdout?: string | Buffer;
|
|
91
|
+
stderr?: string | Buffer;
|
|
92
|
+
}): string {
|
|
96
93
|
const toStr = (x: string | Buffer | undefined) => (x == null ? '' : typeof x === 'string' ? x : x.toString('utf-8'));
|
|
94
|
+
const parts: string[] = [];
|
|
95
|
+
if (result.error) {
|
|
96
|
+
parts.push(result.error.message);
|
|
97
|
+
}
|
|
97
98
|
const out = [toStr(result.stderr), toStr(result.stdout)].filter(Boolean).join('\n').trim();
|
|
98
|
-
|
|
99
|
+
if (out) {
|
|
100
|
+
parts.push(out);
|
|
101
|
+
}
|
|
102
|
+
if (parts.length > 0) {
|
|
103
|
+
return parts.join('\n');
|
|
104
|
+
}
|
|
105
|
+
if (result.status === null) {
|
|
106
|
+
return 'npm did not return an exit code (spawn may have failed — try running npm from an elevated or normal shell, or install Node from nodejs.org so npm-cli.js sits next to node.exe).';
|
|
107
|
+
}
|
|
108
|
+
return `npm exited with code ${result.status}`;
|
|
99
109
|
}
|
|
100
110
|
|
|
101
111
|
/** Resolve a tag (e.g. 'latest') to a concrete version from the registry */
|
|
102
112
|
function resolveTagVersion(packageName: string, tag: string): string | null {
|
|
103
113
|
try {
|
|
104
|
-
const result =
|
|
105
|
-
encoding: 'utf-8',
|
|
106
|
-
stdio: ['ignore', 'pipe', 'pipe'],
|
|
107
|
-
});
|
|
114
|
+
const result = spawnNpmSync(['view', `${packageName}@${tag}`, 'version']);
|
|
108
115
|
if (result.status === 0 && result.stdout) {
|
|
109
116
|
return result.stdout.trim().replace(/"/g, '') || null;
|
|
110
117
|
}
|
|
@@ -115,8 +122,8 @@ function resolveTagVersion(packageName: string, tag: string): string | null {
|
|
|
115
122
|
}
|
|
116
123
|
|
|
117
124
|
/**
|
|
118
|
-
* Safe npm install with integrity verification
|
|
119
|
-
* On Windows
|
|
125
|
+
* Safe npm install with integrity verification.
|
|
126
|
+
* On Windows, npm is invoked via `node .../npm-cli.js` (see npm-spawn.ts) so spawn does not rely on .cmd.
|
|
120
127
|
* When version is 'latest', installs whatever the registry tags as latest (avoids ETARGET for unpublished versions).
|
|
121
128
|
*/
|
|
122
129
|
export function safeNpmInstall(packageName: string, version: string): { success: boolean; error?: string } {
|
|
@@ -127,12 +134,7 @@ export function safeNpmInstall(packageName: string, version: string): { success:
|
|
|
127
134
|
return { success: false, error: `Invalid package name: ${validation.error}` };
|
|
128
135
|
}
|
|
129
136
|
|
|
130
|
-
const
|
|
131
|
-
encoding: 'utf-8',
|
|
132
|
-
stdio: ['ignore', 'pipe', 'pipe'],
|
|
133
|
-
};
|
|
134
|
-
|
|
135
|
-
const runInstall = (args: string[]) => spawnSync(npmCmd, args, spawnOpts);
|
|
137
|
+
const runInstall = (args: string[]) => spawnNpmSync(args);
|
|
136
138
|
|
|
137
139
|
// When using 'latest', we verify against the resolved version after install
|
|
138
140
|
const versionToVerify = version === 'latest' ? null : version;
|