@pixelbyte-software/pixcode 1.49.6 → 1.49.7
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/assets/{index-BuW3PILy.js → index-BqgTbW4j.js} +103 -103
- package/dist/index.html +1 -1
- package/dist-server/server/index.js +2 -2
- package/dist-server/server/index.js.map +1 -1
- package/package.json +1 -1
- package/scripts/smoke/hermes-api-install.mjs +7 -2
- package/scripts/smoke/pixcode-workbench-1-48.mjs +6 -0
- package/server/index.js +2 -2
|
@@ -43,14 +43,19 @@ assert.match(serverIndex, /keepAliveUntilExit: isHermesShellSession/, 'Hermes PT
|
|
|
43
43
|
assert.match(serverIndex, /session\.keepAliveUntilExit/, 'Shell disconnect should skip the 30-minute timeout for Hermes sessions.');
|
|
44
44
|
assert.match(serverIndex, /Invoke-PixcodeHermesConfigure/, 'Hermes start should configure Pixcode MCP as a best-effort step before launch.');
|
|
45
45
|
assert.doesNotMatch(serverIndex, /\$script:HermesCmd chat --toolsets/, 'Hermes H button should launch the same interactive Hermes entrypoint that works when the user types hermes.');
|
|
46
|
+
assert.match(serverIndex, /& \$script:HermesCmd chat/, 'Hermes H button should launch the explicit interactive chat entrypoint on Windows.');
|
|
47
|
+
assert.match(serverIndex, /"\$HERMES_CMD" chat/, 'Hermes H button should launch the explicit interactive chat entrypoint on POSIX.');
|
|
48
|
+
assert.match(serverIndex, /Hermes Agent is starting/, 'Hermes H button should print an immediate startup line instead of leaving a blank terminal while Hermes initializes.');
|
|
46
49
|
assert.doesNotMatch(serverIndex, /node \$\{quote\(configureScript\)\}; & \$script:HermesCmd/, 'A failed Pixcode MCP configure step must not prevent Hermes from opening.');
|
|
47
50
|
assert.doesNotMatch(serverIndex, /Hermes already installed:/, 'Hermes H launch should not leave a version/status banner stuck before the interactive prompt.');
|
|
48
51
|
assert.doesNotMatch(serverIndex, /if command -v hermes >\/dev\/null 2>&1; then command -v hermes; return 0; fi;/, 'POSIX Hermes start must not accept a stale PATH shim without testing it.');
|
|
49
52
|
assert.match(workbench, /HermesActivityButton/, 'Workbench activity rail should expose a dedicated Hermes H button under Terminal.');
|
|
50
|
-
assert.match(workbench, /
|
|
53
|
+
assert.match(workbench, /openBottomTerminal\('hermes'\)/, 'Opening the Hermes H terminal should reconnect the existing backend PTY instead of forcing a new one.');
|
|
54
|
+
assert.match(workbench, /openBottomTerminal\('hermes', \{ forceNewSession: true \}\)/, 'The Hermes new-session action should explicitly kill the stale backend PTY and start fresh.');
|
|
55
|
+
assert.match(workbench, /forceNewSession=\{mode === 'hermes' \? forceNewSession : false\}/, 'Only Hermes bottom-terminal new sessions should request a fresh plain-shell PTY.');
|
|
51
56
|
assert.match(workbench, /installLogRef/, 'Hermes install log panel should keep a scroll ref.');
|
|
52
57
|
assert.match(workbench, /scrollTop = installLogRef\.current\.scrollHeight/, 'Hermes install logs should auto-scroll to the latest line.');
|
|
53
|
-
assert.
|
|
58
|
+
assert.doesNotMatch(workbench, /suspendAutoConnect/, 'Right CLI launches should not be blocked by an open Hermes bottom terminal.');
|
|
54
59
|
assert.match(smoke, /hermes-api-install\.mjs/, 'Main workbench smoke should mention the dedicated Hermes API install smoke.');
|
|
55
60
|
|
|
56
61
|
console.log('hermes API install smoke passed');
|
|
@@ -56,6 +56,8 @@ assert.match(workbench, /WorkbenchCliPanel/, 'Right workbench panel should rende
|
|
|
56
56
|
assert.match(workbench, /setIsTerminalOpen\(true\)/, 'CLI picker should give way to a full-height terminal after the user starts a provider.');
|
|
57
57
|
assert.match(workbench, /onClose=\{closeTerminal\}/, 'Closing the workbench terminal should return to the CLI picker.');
|
|
58
58
|
assert.match(workbench, /WorkbenchCliPanelToolbar/, 'CLI terminal should keep history and new-session actions visible.');
|
|
59
|
+
assert.match(workbench, /onCloseTerminal=\{closeTerminal\}/, 'CLI terminal toolbar should keep a close button that returns to provider selection.');
|
|
60
|
+
assert.match(workbench, /vscodeWorkbench\.cli\.closeTerminal/, 'CLI terminal close action should have a dedicated accessible label.');
|
|
59
61
|
assert.match(workbench, /WORKBENCH_CLI_STATE_STORAGE_KEY/, 'CLI terminal should remember per-project open state across workspace switches.');
|
|
60
62
|
assert.match(workbench, /function WorkbenchBottomTerminal/, 'Terminal activity should render as a bottom plain-shell panel.');
|
|
61
63
|
assert.match(workbench, /BOTTOM_TERMINAL_MIN_HEIGHT/, 'Bottom terminal should support height resizing.');
|
|
@@ -74,9 +76,13 @@ assert.match(themeContext, /return true;/, 'Pixcode should default new installs
|
|
|
74
76
|
assert.match(workbench, /openNewCliSessionPicker/, 'CLI terminal plus should return to provider selection before starting a fresh session.');
|
|
75
77
|
assert.match(workbench, /terminateCurrentCliSession\(selectedProvider\)/, 'CLI terminal plus should terminate the existing provider PTY before showing selection.');
|
|
76
78
|
assert.match(workbench, /forceNewSession=\{terminalLaunch\.forceNewSession\}/, 'Fresh CLI sessions should bypass the cached default PTY.');
|
|
79
|
+
assert.doesNotMatch(workbench, /suspendAutoConnect/, 'Right CLI provider starts should auto-connect directly instead of showing the shell continue overlay.');
|
|
77
80
|
assert.match(serverIndex, /\/api\/shell\/sessions\/terminate/, 'Backend should expose an authenticated endpoint to terminate cached provider PTYs immediately.');
|
|
78
81
|
assert.match(serverIndex, /isPlainShell && !initialCommand/, 'Backend should spawn an interactive plain shell when no terminal command is provided.');
|
|
79
82
|
assert.match(serverIndex, /pixcode:hermes:start/, 'Backend should expand Hermes terminal sentinels on the server host.');
|
|
83
|
+
assert.match(serverIndex, /Hermes Agent is starting/, 'Hermes terminal should show an immediate startup line before the interactive app draws.');
|
|
84
|
+
assert.match(serverIndex, /"\$HERMES_CMD" chat/, 'POSIX Hermes terminal should start the interactive chat command explicitly.');
|
|
85
|
+
assert.match(serverIndex, /& \$script:HermesCmd chat/, 'Windows Hermes terminal should start the interactive chat command explicitly.');
|
|
80
86
|
assert.doesNotMatch(serverIndex, /iex \(irm https:\/\/raw\.githubusercontent\.com\/NousResearch\/hermes-agent\/main\/scripts\/install\.ps1\)/, 'Windows Hermes install should avoid the old inline iex pattern.');
|
|
81
87
|
assert.doesNotMatch(serverIndex, /scriptblock\]::Create\(\(irm https:\/\/raw\.githubusercontent\.com\/NousResearch\/hermes-agent\/main\/scripts\/install\.ps1\)\)/, 'Windows Hermes install should avoid scriptblock Invoke-RestMethod eval patterns.');
|
|
82
88
|
assert.match(serverIndex, /Invoke-WebRequest[\s\S]+install\.ps1[\s\S]+-OutFile/, 'Windows Hermes install should download the installer to a file before running it.');
|
package/server/index.js
CHANGED
|
@@ -484,7 +484,7 @@ function buildHermesShellCommand(kind, env) {
|
|
|
484
484
|
if (kind === 'pixcode:hermes:install') {
|
|
485
485
|
return `${setEnv}; ${resolveHermesCommand}; ${configure}; ${installHermesIfMissing}; Install-HermesIfMissing; Invoke-PixcodeHermesConfigure`;
|
|
486
486
|
}
|
|
487
|
-
return `${setEnv}; ${resolveHermesCommand}; ${configure}; ${installHermesIfMissing}; Install-HermesIfMissing; Invoke-PixcodeHermesConfigure; & $script:HermesCmd`;
|
|
487
|
+
return `${setEnv}; ${resolveHermesCommand}; ${configure}; ${installHermesIfMissing}; Install-HermesIfMissing; Write-Host "Hermes Agent is starting..."; Invoke-PixcodeHermesConfigure; & $script:HermesCmd chat`;
|
|
488
488
|
}
|
|
489
489
|
|
|
490
490
|
const setEnv = [
|
|
@@ -516,7 +516,7 @@ function buildHermesShellCommand(kind, env) {
|
|
|
516
516
|
if (kind === 'pixcode:hermes:install') {
|
|
517
517
|
return `${setEnv} sh -lc ${quote(`${resolveHermesCommand} ${installHermesIfMissing} installHermesIfMissing && { node ${shellQuotePosix(configureScript)} || echo "Pixcode MCP configure failed; continuing."; }`)}`;
|
|
518
518
|
}
|
|
519
|
-
return `${setEnv} sh -lc ${quote(`${resolveHermesCommand} ${installHermesIfMissing} installHermesIfMissing && { node ${shellQuotePosix(configureScript)} || echo "Pixcode MCP configure failed; starting Hermes anyway."; } && "$HERMES_CMD"`)}`;
|
|
519
|
+
return `${setEnv} sh -lc ${quote(`${resolveHermesCommand} ${installHermesIfMissing} installHermesIfMissing && printf "Hermes Agent is starting...\\n" && { node ${shellQuotePosix(configureScript)} || echo "Pixcode MCP configure failed; starting Hermes anyway."; } && exec "$HERMES_CMD" chat`)}`;
|
|
520
520
|
}
|
|
521
521
|
|
|
522
522
|
// Single WebSocket server that handles both paths
|