skydive-cli 0.6.0-beta.42 → 0.6.0-beta.44
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/js/bin.mjs +20 -20
- package/dist/js/{boot-C5U2jSBI.mjs → boot-D-sj-qcz.mjs} +106 -14
- package/dist/js/{client-DpsDh_Xb.mjs → client-BQ6mNlsD.mjs} +1 -1
- package/dist/js/{client-CsARnCrR.mjs → client-D0RqJE_-.mjs} +1 -1
- package/dist/js/{daemon-D9ebFKJp.mjs → daemon-BQBdP8BA.mjs} +2 -2
- package/dist/js/{daemon-7qhQkXR_.mjs → daemon-CaPq7nD7.mjs} +1 -1
- package/dist/js/{daemon-client-CfM9kOSa.mjs → daemon-client-cLHlYHvr.mjs} +1 -1
- package/dist/js/daemon-client-fmh2MKfy.mjs +8 -0
- package/dist/js/{install-S2H6c3JQ.mjs → install-DLTphokL.mjs} +2 -2
- package/dist/js/{print-Brv1z_F8.mjs → print-357wbbEE.mjs} +1 -1
- package/dist/js/{print-CwzcqWeD.mjs → print-B-NaRUOR.mjs} +2 -2
- package/dist/js/{print-share-DpAq8-q7.mjs → print-share-0lItV44A.mjs} +1 -1
- package/dist/js/{rest-Q2ddGVI_.mjs → rest-BzBSObm9.mjs} +1 -1
- package/dist/js/{rest-Bc5w9Ur5.mjs → rest-DapRUHYJ.mjs} +1 -1
- package/package.json +5 -5
- package/dist/js/daemon-client-1baSq1wj.mjs +0 -8
package/dist/js/bin.mjs
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { c as version, s as name, t as createRestClient } from "./rest-
|
|
3
|
-
import { A as getPreference, B as resolveChatAuth, C as DEFAULT_API_URL, D as getConfigPath, E as deleteConfig, F as getStoredApiKeyId, G as saveConfig, H as resolveManagementAuth, I as getStoredApiKeyWorkspaceName, J as setLastSeenVersion, K as saveSession, L as getUpdateCheckDisabled, O as getDefaultAgent, P as getShareMachineDefault, S as API_KEY_PREFIX, T as PREFERENCES, U as resolveSession$1, V as resolveConfig, b as API_KEYS_URL, i as resolveAgent$1, j as getPromptHistoryPath, k as getLastSeenVersion, x as API_KEY_FAMILY_PREFIX, z as resolveAppUrl } from "./print-
|
|
4
|
-
import { A as installAgentAlias, B as resolveWorkspaceId, D as machineOsFromPlatform, E as buildImportSeedPrompt, F as detectShell, I as ensureActiveOrganization, L as getActiveWorkspaceId, M as takenAliasNames, N as SUPPORTED_SHELLS, O as aliasActivationHint, P as defaultInstallEnv, R as getSessionIdentity, V as setActiveWorkspace, c as getAutomaticLogsDir, j as slugifyAliasName, k as dedupeAliasName, l as maybeStartProfiling, o as brandHelpArt, t as installCrashHandler, u as profileDir, w as themes, z as listWorkspaces } from "./install-
|
|
2
|
+
import { c as version, s as name, t as createRestClient } from "./rest-DapRUHYJ.mjs";
|
|
3
|
+
import { A as getPreference, B as resolveChatAuth, C as DEFAULT_API_URL, D as getConfigPath, E as deleteConfig, F as getStoredApiKeyId, G as saveConfig, H as resolveManagementAuth, I as getStoredApiKeyWorkspaceName, J as setLastSeenVersion, K as saveSession, L as getUpdateCheckDisabled, O as getDefaultAgent, P as getShareMachineDefault, S as API_KEY_PREFIX, T as PREFERENCES, U as resolveSession$1, V as resolveConfig, b as API_KEYS_URL, i as resolveAgent$1, j as getPromptHistoryPath, k as getLastSeenVersion, x as API_KEY_FAMILY_PREFIX, z as resolveAppUrl } from "./print-357wbbEE.mjs";
|
|
4
|
+
import { A as installAgentAlias, B as resolveWorkspaceId, D as machineOsFromPlatform, E as buildImportSeedPrompt, F as detectShell, I as ensureActiveOrganization, L as getActiveWorkspaceId, M as takenAliasNames, N as SUPPORTED_SHELLS, O as aliasActivationHint, P as defaultInstallEnv, R as getSessionIdentity, V as setActiveWorkspace, c as getAutomaticLogsDir, j as slugifyAliasName, k as dedupeAliasName, l as maybeStartProfiling, o as brandHelpArt, t as installCrashHandler, u as profileDir, w as themes, z as listWorkspaces } from "./install-DLTphokL.mjs";
|
|
5
5
|
import { n as printError, r as printTable, t as output } from "./output-C9mb3sUB.mjs";
|
|
6
6
|
import { t as HttpError } from "./http-error-BF2NZZE3.mjs";
|
|
7
7
|
import "./billing-blocked-D3l5kJlX.mjs";
|
|
8
|
-
import { s as resolveMachineIdentity } from "./client-
|
|
8
|
+
import { s as resolveMachineIdentity } from "./client-D0RqJE_-.mjs";
|
|
9
9
|
import "./tls-cert-Rua2oV7n.mjs";
|
|
10
10
|
import { i as grantPortalAccess, n as fetchPortalDevices, o as registerPortalDevice, r as findThisDevice, s as revokePortalAccess } from "./api-BFQ4PQDA.mjs";
|
|
11
|
-
import { d as daemonPaths, i as queryDaemonStatus, n as ensureDaemonRunning, s as stopDaemon, u as PORTAL_DAEMON_FLAG } from "./daemon-
|
|
11
|
+
import { d as daemonPaths, i as queryDaemonStatus, n as ensureDaemonRunning, s as stopDaemon, u as PORTAL_DAEMON_FLAG } from "./daemon-CaPq7nD7.mjs";
|
|
12
12
|
import { a as encodeFsRequest, i as decodeFsResponse, n as SANDBOX_STREAM_PATH, r as streamSpecToQuery, t as SandboxStream } from "./client-CFnT0cAy.mjs";
|
|
13
13
|
import { hideBin } from "yargs/helpers";
|
|
14
14
|
import yargs from "yargs";
|
|
@@ -1080,7 +1080,7 @@ async function resolveTargetAgentId(client, selector) {
|
|
|
1080
1080
|
printError("Missing --agent <id or name>. Run `skydive agents list` for candidates.");
|
|
1081
1081
|
process.exit(1);
|
|
1082
1082
|
}
|
|
1083
|
-
const { resolveAgent } = await import("./print-
|
|
1083
|
+
const { resolveAgent } = await import("./print-B-NaRUOR.mjs");
|
|
1084
1084
|
const result = await client.listAgents({
|
|
1085
1085
|
scope: "org",
|
|
1086
1086
|
limit: 100
|
|
@@ -1823,7 +1823,7 @@ const importCommand = {
|
|
|
1823
1823
|
process.exit(1);
|
|
1824
1824
|
}
|
|
1825
1825
|
}
|
|
1826
|
-
const { runChat } = await import("./boot-
|
|
1826
|
+
const { runChat } = await import("./boot-D-sj-qcz.mjs");
|
|
1827
1827
|
await runChat({
|
|
1828
1828
|
appUrl,
|
|
1829
1829
|
sessionToken: session.value.sessionToken,
|
|
@@ -1853,7 +1853,7 @@ async function runImportPrintMode({ argv, appUrl }) {
|
|
|
1853
1853
|
printError(`${session.error.message} For non-interactive use, run \`skydive auth login --web\` first, or set SKYDIVE_SESSION_TOKEN.`);
|
|
1854
1854
|
process.exit(1);
|
|
1855
1855
|
}
|
|
1856
|
-
const { connectMachineShare } = await import("./print-share-
|
|
1856
|
+
const { connectMachineShare } = await import("./print-share-0lItV44A.mjs");
|
|
1857
1857
|
const machineShare = await connectMachineShare({
|
|
1858
1858
|
appUrl,
|
|
1859
1859
|
sessionToken: session.value.sessionToken,
|
|
@@ -1861,7 +1861,7 @@ async function runImportPrintMode({ argv, appUrl }) {
|
|
|
1861
1861
|
});
|
|
1862
1862
|
const extra = (argv.print ?? "").trim();
|
|
1863
1863
|
const prompt = buildImportSeedPrompt(process.cwd(), machineOsFromPlatform(process.platform)) + (extra ? `\n\nAdditional instructions: ${extra}` : "");
|
|
1864
|
-
const { runPrint } = await import("./print-
|
|
1864
|
+
const { runPrint } = await import("./print-B-NaRUOR.mjs");
|
|
1865
1865
|
try {
|
|
1866
1866
|
const result = await runPrint({
|
|
1867
1867
|
appUrl,
|
|
@@ -2284,7 +2284,7 @@ const chatCommand = {
|
|
|
2284
2284
|
sessionToken: auth.value.token,
|
|
2285
2285
|
agentSelector: argv.agent ?? null
|
|
2286
2286
|
});
|
|
2287
|
-
const { runChat } = await import("./boot-
|
|
2287
|
+
const { runChat } = await import("./boot-D-sj-qcz.mjs");
|
|
2288
2288
|
await runChat({
|
|
2289
2289
|
appUrl: auth.value.appUrl,
|
|
2290
2290
|
sessionToken: auth.value.token,
|
|
@@ -2368,7 +2368,7 @@ async function runPrintMode({ argv, appUrl }) {
|
|
|
2368
2368
|
printError(`${auth.error.message} For non-interactive use, run \`skydive auth login\` first, or set SKYDIVE_API_KEY / SKYDIVE_SESSION_TOKEN.`);
|
|
2369
2369
|
process.exit(1);
|
|
2370
2370
|
}
|
|
2371
|
-
const { runPrint, readStdin } = await import("./print-
|
|
2371
|
+
const { runPrint, readStdin } = await import("./print-B-NaRUOR.mjs");
|
|
2372
2372
|
const workspaceId = await resolveWorkspaceFlag({
|
|
2373
2373
|
appUrl,
|
|
2374
2374
|
sessionToken: auth.value.token,
|
|
@@ -2398,7 +2398,7 @@ async function runPrintMode({ argv, appUrl }) {
|
|
|
2398
2398
|
process.exit(1);
|
|
2399
2399
|
}
|
|
2400
2400
|
} else {
|
|
2401
|
-
const { connectMachineShare } = await import("./print-share-
|
|
2401
|
+
const { connectMachineShare } = await import("./print-share-0lItV44A.mjs");
|
|
2402
2402
|
machineShare = await connectMachineShare({
|
|
2403
2403
|
appUrl: auth.value.appUrl,
|
|
2404
2404
|
sessionToken: auth.value.token,
|
|
@@ -2463,7 +2463,7 @@ const getCommand$1 = {
|
|
|
2463
2463
|
printError(`${auth.error.message} Run \`skydive auth login\` first, or set SKYDIVE_API_KEY / SKYDIVE_SESSION_TOKEN.`);
|
|
2464
2464
|
process.exit(1);
|
|
2465
2465
|
}
|
|
2466
|
-
const { messageGet } = await import("./print-
|
|
2466
|
+
const { messageGet } = await import("./print-B-NaRUOR.mjs");
|
|
2467
2467
|
try {
|
|
2468
2468
|
const result = await messageGet({
|
|
2469
2469
|
appUrl: auth.value.appUrl,
|
|
@@ -2666,7 +2666,7 @@ const switchCommand = {
|
|
|
2666
2666
|
printError("The workspace picker needs the Bun runtime and it could not be set up automatically. Pass a workspace slug instead, or install Bun and retry.");
|
|
2667
2667
|
process.exit(1);
|
|
2668
2668
|
}
|
|
2669
|
-
const { runWorkspacePicker } = await import("./boot-
|
|
2669
|
+
const { runWorkspacePicker } = await import("./boot-D-sj-qcz.mjs");
|
|
2670
2670
|
await runWorkspacePicker(session);
|
|
2671
2671
|
return;
|
|
2672
2672
|
}
|
|
@@ -2745,7 +2745,7 @@ const openCommand = {
|
|
|
2745
2745
|
const agent = argv.agent ? resolveAgent$1((await fetchPortalDevices(session)).agents, argv.agent) : null;
|
|
2746
2746
|
const cwd = argv.cwd ? path.resolve(argv.cwd) : process.cwd();
|
|
2747
2747
|
const { machineName } = await resolveMachineIdentity(null);
|
|
2748
|
-
const { PortalDaemonClient } = await import("./daemon-client-
|
|
2748
|
+
const { PortalDaemonClient } = await import("./daemon-client-fmh2MKfy.mjs");
|
|
2749
2749
|
let lastLine = "";
|
|
2750
2750
|
let signalConnected;
|
|
2751
2751
|
const connected = new Promise((resolve) => {
|
|
@@ -3105,8 +3105,8 @@ const sandboxCommand = {
|
|
|
3105
3105
|
}).example("skydive sandbox --agent grace", "Live terminal (Ctrl-] detaches)").example("skydive sandbox --agent grace -- tail -n 50 /tmp/harness.log", "One-shot command (use `--` so its flags reach the sandbox)").example("skydive sandbox --agent grace -- sh -c 'ls /tmp | wc -l'", "Shell features go through an explicit `sh -c`"),
|
|
3106
3106
|
handler: async (argv) => {
|
|
3107
3107
|
const session = requireSession(argv);
|
|
3108
|
-
const { createRestClient } = await import("./rest-
|
|
3109
|
-
const { resolveAgent } = await import("./print-
|
|
3108
|
+
const { createRestClient } = await import("./rest-BzBSObm9.mjs");
|
|
3109
|
+
const { resolveAgent } = await import("./print-B-NaRUOR.mjs");
|
|
3110
3110
|
const client = createRestClient({
|
|
3111
3111
|
appUrl: session.appUrl,
|
|
3112
3112
|
sessionToken: session.sessionToken
|
|
@@ -3423,8 +3423,8 @@ const fsEditCommand = {
|
|
|
3423
3423
|
handler: async (argv) => {
|
|
3424
3424
|
const session = requireSession(argv);
|
|
3425
3425
|
const remotePath = argv.path;
|
|
3426
|
-
const { createRestClient } = await import("./rest-
|
|
3427
|
-
const { resolveAgent } = await import("./print-
|
|
3426
|
+
const { createRestClient } = await import("./rest-BzBSObm9.mjs");
|
|
3427
|
+
const { resolveAgent } = await import("./print-B-NaRUOR.mjs");
|
|
3428
3428
|
const client = createRestClient({
|
|
3429
3429
|
appUrl: session.appUrl,
|
|
3430
3430
|
sessionToken: session.sessionToken
|
|
@@ -4878,7 +4878,7 @@ if (process.argv.includes(UPDATE_WORKER_FLAG)) {
|
|
|
4878
4878
|
process.exit(0);
|
|
4879
4879
|
}
|
|
4880
4880
|
if (process.argv.includes(PORTAL_DAEMON_FLAG)) {
|
|
4881
|
-
const { runPortalDaemon } = await import("./daemon-
|
|
4881
|
+
const { runPortalDaemon } = await import("./daemon-BQBdP8BA.mjs");
|
|
4882
4882
|
runPortalDaemon(process.argv);
|
|
4883
4883
|
} else runCli();
|
|
4884
4884
|
function runCli() {
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { a as errorMessage, i as sendErrorMessage, n as errorDetail, o as isRecord, t as createRestClient } from "./rest-
|
|
3
|
-
import { C as DEFAULT_API_URL, D as getConfigPath, M as getReviewStateDir, N as getSavedTheme, R as recordDefaultAgent, W as resolveWebUrl, _ as computeSettledLabel, c as actionableCardVerb, d as parseOauthConnectParams, f as prioritizeActionableCards, g as composeQuestionAnswerEntries, h as composeQuestionAnswer, i as resolveAgent, l as cardActionErrorMessage, m as resolveConnectUrl, p as reconcileMaskedInput, q as saveTheme, s as MASK_CHAR, u as parseExternalOauthConnectParams, v as parseConnectCard, w as DEFAULT_APP_URL, y as specKeyFor } from "./print-
|
|
4
|
-
import { A as installAgentAlias, C as themeVersion, D as machineOsFromPlatform, F as detectShell, L as getActiveWorkspaceId, M as takenAliasNames, O as aliasActivationHint, S as themeModeFromColorFgBg, T as themesForMode, V as setActiveWorkspace, _ as monoTheme, a as WORDMARK, b as themeForMode, d as profilingEnabled, f as record, g as findTheme, h as applyTheme, i as MARK_CELLS, j as slugifyAliasName, k as dedupeAliasName, m as DEFAULT_THEME_ID, n as buildCrashReport, p as writeArtifact, r as writeCrashReport, s as splashFitsWidth, t as installCrashHandler, v as noColorRequested, x as themeMode, y as theme, z as listWorkspaces } from "./install-
|
|
2
|
+
import { a as errorMessage, i as sendErrorMessage, n as errorDetail, o as isRecord, t as createRestClient } from "./rest-DapRUHYJ.mjs";
|
|
3
|
+
import { C as DEFAULT_API_URL, D as getConfigPath, M as getReviewStateDir, N as getSavedTheme, R as recordDefaultAgent, W as resolveWebUrl, _ as computeSettledLabel, c as actionableCardVerb, d as parseOauthConnectParams, f as prioritizeActionableCards, g as composeQuestionAnswerEntries, h as composeQuestionAnswer, i as resolveAgent, l as cardActionErrorMessage, m as resolveConnectUrl, p as reconcileMaskedInput, q as saveTheme, s as MASK_CHAR, u as parseExternalOauthConnectParams, v as parseConnectCard, w as DEFAULT_APP_URL, y as specKeyFor } from "./print-357wbbEE.mjs";
|
|
4
|
+
import { A as installAgentAlias, C as themeVersion, D as machineOsFromPlatform, F as detectShell, L as getActiveWorkspaceId, M as takenAliasNames, O as aliasActivationHint, S as themeModeFromColorFgBg, T as themesForMode, V as setActiveWorkspace, _ as monoTheme, a as WORDMARK, b as themeForMode, d as profilingEnabled, f as record, g as findTheme, h as applyTheme, i as MARK_CELLS, j as slugifyAliasName, k as dedupeAliasName, m as DEFAULT_THEME_ID, n as buildCrashReport, p as writeArtifact, r as writeCrashReport, s as splashFitsWidth, t as installCrashHandler, v as noColorRequested, x as themeMode, y as theme, z as listWorkspaces } from "./install-DLTphokL.mjs";
|
|
5
5
|
import { t as HttpError } from "./http-error-BF2NZZE3.mjs";
|
|
6
6
|
import { i as billingBlockedOutcomeFromSendResponse } from "./billing-blocked-D3l5kJlX.mjs";
|
|
7
|
-
import { n as PortalClient } from "./client-
|
|
7
|
+
import { n as PortalClient } from "./client-D0RqJE_-.mjs";
|
|
8
8
|
import { t as defaultTlsCertSource } from "./tls-cert-Rua2oV7n.mjs";
|
|
9
9
|
import "./api-BFQ4PQDA.mjs";
|
|
10
|
-
import "./daemon-
|
|
10
|
+
import "./daemon-CaPq7nD7.mjs";
|
|
11
11
|
import { t as SandboxStream } from "./client-CFnT0cAy.mjs";
|
|
12
|
-
import { t as PortalDaemonClient } from "./daemon-client-
|
|
12
|
+
import { t as PortalDaemonClient } from "./daemon-client-cLHlYHvr.mjs";
|
|
13
13
|
import { t as runRawPtyPassthrough } from "./raw-pty-Cj-O0pyb.mjs";
|
|
14
14
|
import * as os$1 from "node:os";
|
|
15
15
|
import { homedir, platform, release, tmpdir } from "node:os";
|
|
@@ -5671,7 +5671,8 @@ const ConversationContext = createContext({
|
|
|
5671
5671
|
subagentSelection: null,
|
|
5672
5672
|
collectSandboxStats: null,
|
|
5673
5673
|
latestComputerId: null,
|
|
5674
|
-
scrolledUp: false
|
|
5674
|
+
scrolledUp: false,
|
|
5675
|
+
transcriptContentWidth: null
|
|
5675
5676
|
});
|
|
5676
5677
|
function useConversationContext() {
|
|
5677
5678
|
return useContext(ConversationContext);
|
|
@@ -5732,6 +5733,10 @@ const GiB = 1024 * 1024 * 1024;
|
|
|
5732
5733
|
function gb(bytes) {
|
|
5733
5734
|
return (bytes / GiB).toFixed(1);
|
|
5734
5735
|
}
|
|
5736
|
+
/** Whole GiB, for the compact rungs of the caption ladder. */
|
|
5737
|
+
function gbWhole(bytes) {
|
|
5738
|
+
return String(Math.round(bytes / GiB));
|
|
5739
|
+
}
|
|
5735
5740
|
/**
|
|
5736
5741
|
* Reduce a snapshot to the ordered list of gauges the `/computer` card draws:
|
|
5737
5742
|
* CPU utilization, memory, and disk — the three signals the api's live-stats
|
|
@@ -5746,6 +5751,11 @@ function toGauges(stats) {
|
|
|
5746
5751
|
label: "cpu",
|
|
5747
5752
|
fraction: cpuFraction,
|
|
5748
5753
|
detail: `${stats.cpuUsedPct.toFixed(0)}% · ${stats.cpuCount} vCPU`,
|
|
5754
|
+
variants: [
|
|
5755
|
+
`${stats.cpuUsedPct.toFixed(0)}% · ${stats.cpuCount} vCPU`,
|
|
5756
|
+
`${stats.cpuCount} vCPU`,
|
|
5757
|
+
""
|
|
5758
|
+
],
|
|
5749
5759
|
severity: severityFor(cpuFraction)
|
|
5750
5760
|
});
|
|
5751
5761
|
const memFraction = stats.memTotalBytes > 0 ? stats.memUsedBytes / stats.memTotalBytes : 0;
|
|
@@ -5753,6 +5763,7 @@ function toGauges(stats) {
|
|
|
5753
5763
|
label: "memory",
|
|
5754
5764
|
fraction: memFraction,
|
|
5755
5765
|
detail: `${gb(stats.memUsedBytes)} / ${gb(stats.memTotalBytes)} GB`,
|
|
5766
|
+
variants: byteVariants(stats.memUsedBytes, stats.memTotalBytes),
|
|
5756
5767
|
severity: severityFor(memFraction)
|
|
5757
5768
|
});
|
|
5758
5769
|
const diskFraction = stats.diskTotalBytes > 0 ? stats.diskUsedBytes / stats.diskTotalBytes : 0;
|
|
@@ -5760,11 +5771,70 @@ function toGauges(stats) {
|
|
|
5760
5771
|
label: "disk",
|
|
5761
5772
|
fraction: diskFraction,
|
|
5762
5773
|
detail: `${gb(stats.diskUsedBytes)} / ${gb(stats.diskTotalBytes)} GB`,
|
|
5774
|
+
variants: byteVariants(stats.diskUsedBytes, stats.diskTotalBytes),
|
|
5763
5775
|
severity: severityFor(diskFraction)
|
|
5764
5776
|
});
|
|
5765
5777
|
return gauges;
|
|
5766
5778
|
}
|
|
5767
5779
|
/**
|
|
5780
|
+
* The caption ladder for a used/total byte pair: the full spaced caption,
|
|
5781
|
+
* then progressively shorter statements of the same numbers. Each rung must
|
|
5782
|
+
* be strictly shorter than the one before it so the fit loop below always
|
|
5783
|
+
* makes progress; the final rung is empty (percent column only).
|
|
5784
|
+
*/
|
|
5785
|
+
function byteVariants(used, total) {
|
|
5786
|
+
return [
|
|
5787
|
+
`${gb(used)} / ${gb(total)} GB`,
|
|
5788
|
+
`${gb(used)}/${gb(total)} GB`,
|
|
5789
|
+
`${gbWhole(used)}/${gbWhole(total)} GB`,
|
|
5790
|
+
`${gbWhole(used)}/${gbWhole(total)}`,
|
|
5791
|
+
""
|
|
5792
|
+
];
|
|
5793
|
+
}
|
|
5794
|
+
/**
|
|
5795
|
+
* Columns a gauge row spends that are NOT the bar: the two-space gap after
|
|
5796
|
+
* the padded label, the percent column (one space + four right-aligned
|
|
5797
|
+
* cols), and the two-space gap before the detail caption. Counted in one
|
|
5798
|
+
* place so the width budgeting below can't drift from what `GaugeRow` draws.
|
|
5799
|
+
*/
|
|
5800
|
+
const GAUGE_ROW_CHROME_COLS = 9;
|
|
5801
|
+
/** Bar floor: below this the glyph strip stops reading as a gauge. */
|
|
5802
|
+
const GAUGE_MIN_BAR_WIDTH = 4;
|
|
5803
|
+
/**
|
|
5804
|
+
* Fit a set of gauges into a row of `width` columns. One ladder index is
|
|
5805
|
+
* chosen for ALL rows (so the captions stay a uniform grid), picking the
|
|
5806
|
+
* most verbose caption every row can carry with a bar at or above the floor;
|
|
5807
|
+
* the bar takes whatever the chosen captions leave. If even the empty
|
|
5808
|
+
* caption doesn't leave the floor, the bar shrinks to what's left rather
|
|
5809
|
+
* than wrapping — a row is always exactly one line.
|
|
5810
|
+
*
|
|
5811
|
+
* Pure, so the layout math is unit-testable without a renderer.
|
|
5812
|
+
*/
|
|
5813
|
+
function fitGaugesToWidth(opts) {
|
|
5814
|
+
const room = opts.width - opts.labelWidth - GAUGE_ROW_CHROME_COLS;
|
|
5815
|
+
const chosen = opts.gauges.map((g) => {
|
|
5816
|
+
const rung = g.variants.findIndex((v) => room - v.length >= GAUGE_MIN_BAR_WIDTH);
|
|
5817
|
+
return rung === -1 ? g.variants.length - 1 : rung;
|
|
5818
|
+
});
|
|
5819
|
+
const shared = Math.max(0, ...chosen);
|
|
5820
|
+
const fitted = opts.gauges.map((g, i) => {
|
|
5821
|
+
const rung = chosen[i] ?? g.variants.length - 1;
|
|
5822
|
+
const detail = g.variants[Math.min(shared, rung)] ?? "";
|
|
5823
|
+
return {
|
|
5824
|
+
gauge: {
|
|
5825
|
+
...g,
|
|
5826
|
+
detail
|
|
5827
|
+
},
|
|
5828
|
+
captionCols: detail.length
|
|
5829
|
+
};
|
|
5830
|
+
});
|
|
5831
|
+
const barWidth = Math.max(1, room - Math.max(0, ...fitted.map((f) => f.captionCols)));
|
|
5832
|
+
return {
|
|
5833
|
+
gauges: fitted.map((f) => f.gauge),
|
|
5834
|
+
barWidth
|
|
5835
|
+
};
|
|
5836
|
+
}
|
|
5837
|
+
/**
|
|
5768
5838
|
* A single-line horizontal bar of `width` cells filled to `fraction`
|
|
5769
5839
|
* (clamped 0..1), using block glyphs. The last partial cell uses one of the
|
|
5770
5840
|
* eighth-block glyphs so a 37%% bar reads differently from a 40%% one even in a
|
|
@@ -5816,7 +5886,7 @@ function renderBar(fraction, width) {
|
|
|
5816
5886
|
* this component only draws.
|
|
5817
5887
|
*/
|
|
5818
5888
|
function ComputerItem({ item }) {
|
|
5819
|
-
const { collectSandboxStats, latestComputerId, scrolledUp } = useConversationContext();
|
|
5889
|
+
const { collectSandboxStats, latestComputerId, scrolledUp, transcriptContentWidth } = useConversationContext();
|
|
5820
5890
|
const live = shouldPollComputer({
|
|
5821
5891
|
isLatest: latestComputerId === item.id,
|
|
5822
5892
|
canCollect: collectSandboxStats !== null,
|
|
@@ -5868,8 +5938,15 @@ function ComputerItem({ item }) {
|
|
|
5868
5938
|
}) });
|
|
5869
5939
|
const gauges = toGauges(stats);
|
|
5870
5940
|
const labelWidth = Math.max(...gauges.map((g) => g.label.length));
|
|
5871
|
-
const barWidth =
|
|
5872
|
-
|
|
5941
|
+
const { gauges: fittedGauges, barWidth } = transcriptContentWidth === null ? {
|
|
5942
|
+
gauges,
|
|
5943
|
+
barWidth: 24
|
|
5944
|
+
} : fitGaugesToWidth({
|
|
5945
|
+
width: transcriptContentWidth,
|
|
5946
|
+
labelWidth,
|
|
5947
|
+
gauges
|
|
5948
|
+
});
|
|
5949
|
+
return /* @__PURE__ */ jsx(Shell, { children: fittedGauges.map((g) => /* @__PURE__ */ jsx(GaugeRow, {
|
|
5873
5950
|
gauge: g,
|
|
5874
5951
|
labelWidth,
|
|
5875
5952
|
barWidth
|
|
@@ -5931,6 +6008,14 @@ function GaugeRow({ gauge, labelWidth, barWidth }) {
|
|
|
5931
6008
|
* all content shares one left margin and the transcript stays clean — the
|
|
5932
6009
|
* opencode pattern. Status/role is carried by glyphs and color, not bars.
|
|
5933
6010
|
*/
|
|
6011
|
+
/**
|
|
6012
|
+
* Columns the Row wrapper spends before/around its content: left padding,
|
|
6013
|
+
* the 1-col gutter bar, the gap after it, and right padding. Exported so
|
|
6014
|
+
* callers that know the transcript strip width (the chat screen, for the
|
|
6015
|
+
* `/computer` card's gauge budget) can net it out without copying the
|
|
6016
|
+
* geometry.
|
|
6017
|
+
*/
|
|
6018
|
+
const TRANSCRIPT_ROW_CHROME_COLS = 4;
|
|
5934
6019
|
function Row({ barColor, children }) {
|
|
5935
6020
|
return /* @__PURE__ */ jsxs("box", {
|
|
5936
6021
|
style: {
|
|
@@ -7870,7 +7955,11 @@ function ComputerSection({ visible, collectSandboxStats, pollMs }) {
|
|
|
7870
7955
|
]);
|
|
7871
7956
|
const gauges = stats === null ? [] : toGauges(stats);
|
|
7872
7957
|
const labelWidth = 6;
|
|
7873
|
-
const barWidth =
|
|
7958
|
+
const { gauges: fittedGauges, barWidth } = fitGaugesToWidth({
|
|
7959
|
+
width: SIDE_PANEL_WIDTH - 4,
|
|
7960
|
+
labelWidth,
|
|
7961
|
+
gauges
|
|
7962
|
+
});
|
|
7874
7963
|
return /* @__PURE__ */ jsxs("box", {
|
|
7875
7964
|
style: {
|
|
7876
7965
|
flexDirection: "column",
|
|
@@ -7893,7 +7982,7 @@ function ComputerSection({ visible, collectSandboxStats, pollMs }) {
|
|
|
7893
7982
|
fg: theme.dim,
|
|
7894
7983
|
children: collectSandboxStats === null ? "no stats source" : "no sandbox running"
|
|
7895
7984
|
}) : null,
|
|
7896
|
-
|
|
7985
|
+
fittedGauges.map((g) => /* @__PURE__ */ jsx(GaugeRow, {
|
|
7897
7986
|
gauge: g,
|
|
7898
7987
|
labelWidth,
|
|
7899
7988
|
barWidth
|
|
@@ -16356,6 +16445,7 @@ function ChatScreen({ agent, conversation, attachRunId, parentConversationId })
|
|
|
16356
16445
|
width
|
|
16357
16446
|
}) === "side";
|
|
16358
16447
|
const sidePanelWidth = sidePanelShown ? SIDE_PANEL_WIDTH : 0;
|
|
16448
|
+
const transcriptContentWidth = Math.max(1, bodyWidth - sidePanelWidth - (sidePanelShown ? 2 : 0) - (reviewPlacement === "side" ? reviewWidth + 1 : 0) - TRANSCRIPT_ROW_CHROME_COLS);
|
|
16359
16449
|
const inlineReviewHeight = reviewOpen && reviewPlacement === "below" ? reviewHeight : 0;
|
|
16360
16450
|
const menuRows = menuOpen ? completionMenuHeight(menuCommands.length) : 0;
|
|
16361
16451
|
const todoCardVisible = !credPrompt && !planHidden && !!todos && todos.length > 0;
|
|
@@ -16862,7 +16952,8 @@ function ChatScreen({ agent, conversation, attachRunId, parentConversationId })
|
|
|
16862
16952
|
subagentSelection,
|
|
16863
16953
|
collectSandboxStats: boundCollectSandboxStats,
|
|
16864
16954
|
latestComputerId,
|
|
16865
|
-
scrolledUp
|
|
16955
|
+
scrolledUp,
|
|
16956
|
+
transcriptContentWidth
|
|
16866
16957
|
}), [
|
|
16867
16958
|
rest,
|
|
16868
16959
|
conversationId,
|
|
@@ -16871,7 +16962,8 @@ function ChatScreen({ agent, conversation, attachRunId, parentConversationId })
|
|
|
16871
16962
|
subagentSelection,
|
|
16872
16963
|
boundCollectSandboxStats,
|
|
16873
16964
|
latestComputerId,
|
|
16874
|
-
scrolledUp
|
|
16965
|
+
scrolledUp,
|
|
16966
|
+
transcriptContentWidth
|
|
16875
16967
|
]);
|
|
16876
16968
|
const actionableCards = useMemo(() => prioritizeActionableCards(items.filter(isActionableCard)), [items]);
|
|
16877
16969
|
const cardVerb = useMemo(() => actionableCardVerb(actionableCards), [actionableCards]);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { n as PortalClient, r as RATE_LIMIT_STAND_DOWN_MS, t as AUTH_STAND_DOWN_MS } from "./client-
|
|
2
|
+
import { n as PortalClient, r as RATE_LIMIT_STAND_DOWN_MS, t as AUTH_STAND_DOWN_MS } from "./client-D0RqJE_-.mjs";
|
|
3
3
|
import "./api-BFQ4PQDA.mjs";
|
|
4
4
|
|
|
5
5
|
export { PortalClient };
|
|
@@ -161,7 +161,7 @@ function errorMessage(err) {
|
|
|
161
161
|
* the commit time of the built tree is one monotonic clock they share.
|
|
162
162
|
*/
|
|
163
163
|
function portalDaemonBuild() {
|
|
164
|
-
return "
|
|
164
|
+
return "1790647386";
|
|
165
165
|
}
|
|
166
166
|
/**
|
|
167
167
|
* Whether a client carrying `mine` should replace a running daemon carrying
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import "./client-
|
|
2
|
+
import "./client-D0RqJE_-.mjs";
|
|
3
3
|
import "./tls-cert-Rua2oV7n.mjs";
|
|
4
4
|
import "./api-BFQ4PQDA.mjs";
|
|
5
|
-
import { a as runPortalDaemon, c as stopDaemonForHandoff, i as queryDaemonStatus, n as ensureDaemonRunning, o as startPortalDaemon, r as isDaemonListening, s as stopDaemon, t as PortalDaemon } from "./daemon-
|
|
5
|
+
import { a as runPortalDaemon, c as stopDaemonForHandoff, i as queryDaemonStatus, n as ensureDaemonRunning, o as startPortalDaemon, r as isDaemonListening, s as stopDaemon, t as PortalDaemon } from "./daemon-CaPq7nD7.mjs";
|
|
6
6
|
|
|
7
7
|
export { runPortalDaemon };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { a as portalDaemonBuild, i as isNewerBuild, n as PortalClient, o as isRecord } from "./client-
|
|
2
|
+
import { a as portalDaemonBuild, i as isNewerBuild, n as PortalClient, o as isRecord } from "./client-D0RqJE_-.mjs";
|
|
3
3
|
import { t as defaultTlsCertSource } from "./tls-cert-Rua2oV7n.mjs";
|
|
4
4
|
import os from "node:os";
|
|
5
5
|
import path from "node:path";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { d as daemonPaths, f as encodeLine, l as LOCAL_PROTOCOL_VERSION, m as parseDaemonMessage, n as ensureDaemonRunning, p as makeLineParser } from "./daemon-
|
|
2
|
+
import { d as daemonPaths, f as encodeLine, l as LOCAL_PROTOCOL_VERSION, m as parseDaemonMessage, n as ensureDaemonRunning, p as makeLineParser } from "./daemon-CaPq7nD7.mjs";
|
|
3
3
|
import { randomUUID } from "node:crypto";
|
|
4
4
|
import { connect } from "node:net";
|
|
5
5
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { c as version$1 } from "./rest-
|
|
3
|
-
import { D as getConfigPath } from "./print-
|
|
2
|
+
import { c as version$1 } from "./rest-DapRUHYJ.mjs";
|
|
3
|
+
import { D as getConfigPath } from "./print-357wbbEE.mjs";
|
|
4
4
|
import os from "node:os";
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
import { err, ok } from "neverthrow";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { a as errorMessage, i as sendErrorMessage, o as isRecord, t as createRestClient } from "./rest-
|
|
2
|
+
import { a as errorMessage, i as sendErrorMessage, o as isRecord, t as createRestClient } from "./rest-DapRUHYJ.mjs";
|
|
3
3
|
import { t as HttpError } from "./http-error-BF2NZZE3.mjs";
|
|
4
4
|
import { i as billingBlockedOutcomeFromSendResponse, n as BillingBlockedError } from "./billing-blocked-D3l5kJlX.mjs";
|
|
5
5
|
import path from "node:path";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import "./rest-
|
|
3
|
-
import { a as runPrint, i as resolveAgent, n as messageGet, o as toPrintError, r as readStdin, t as collectRunText } from "./print-
|
|
2
|
+
import "./rest-DapRUHYJ.mjs";
|
|
3
|
+
import { a as runPrint, i as resolveAgent, n as messageGet, o as toPrintError, r as readStdin, t as collectRunText } from "./print-357wbbEE.mjs";
|
|
4
4
|
import "./billing-blocked-D3l5kJlX.mjs";
|
|
5
5
|
|
|
6
6
|
export { messageGet, readStdin, resolveAgent, runPrint };
|
|
@@ -14,7 +14,7 @@ import { n as printError } from "./output-C9mb3sUB.mjs";
|
|
|
14
14
|
* the reply (and to --json).
|
|
15
15
|
*/
|
|
16
16
|
async function connectMachineShare({ appUrl, sessionToken, timeoutHint }) {
|
|
17
|
-
const { PortalClient } = await import("./client-
|
|
17
|
+
const { PortalClient } = await import("./client-BQ6mNlsD.mjs");
|
|
18
18
|
const { defaultTlsCertSource } = await import("./tls-cert-BpCaD5AT.mjs");
|
|
19
19
|
let signalConnected;
|
|
20
20
|
const connected = new Promise((resolve) => {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { i as sendErrorMessage, n as errorDetail, r as filenameFromContentDisposition, t as createRestClient } from "./rest-
|
|
2
|
+
import { i as sendErrorMessage, n as errorDetail, r as filenameFromContentDisposition, t as createRestClient } from "./rest-DapRUHYJ.mjs";
|
|
3
3
|
import { t as HttpError } from "./http-error-BF2NZZE3.mjs";
|
|
4
4
|
import "./billing-blocked-D3l5kJlX.mjs";
|
|
5
5
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "skydive-cli",
|
|
3
|
-
"version": "0.6.0-beta.
|
|
3
|
+
"version": "0.6.0-beta.44",
|
|
4
4
|
"description": "Skydive CLI — cloud agents from the command line",
|
|
5
5
|
"homepage": "https://skydive.com",
|
|
6
6
|
"license": "MIT",
|
|
@@ -71,9 +71,9 @@
|
|
|
71
71
|
},
|
|
72
72
|
"//optionalDependencies": "The per-platform binary packages (skydive-cli-<os>-<arch>) are INTENTIONALLY not committed here. They are published by release-skydive-cli-binaries.yml and injected — pinned to the exact version being published — into the published launcher's optionalDependencies at release time (scripts/prepare-platform-packages.mjs --pin-version, run in release-skydive-cli.yml). Committing them would make `yarn install` try to resolve versions that only exist post-publish, breaking local dev and CI. npm installs of a published skydive-cli still get them (os/cpu-gated); the launcher (src/launcher.ts) resolves and execs the matching one. Local dev never needs them: it runs the JS bundle or `build:binary` directly.",
|
|
73
73
|
"optionalDependencies": {
|
|
74
|
-
"skydive-cli-darwin-arm64": "0.6.0-beta.
|
|
75
|
-
"skydive-cli-darwin-x64": "0.6.0-beta.
|
|
76
|
-
"skydive-cli-linux-x64": "0.6.0-beta.
|
|
77
|
-
"skydive-cli-linux-arm64": "0.6.0-beta.
|
|
74
|
+
"skydive-cli-darwin-arm64": "0.6.0-beta.44",
|
|
75
|
+
"skydive-cli-darwin-x64": "0.6.0-beta.44",
|
|
76
|
+
"skydive-cli-linux-x64": "0.6.0-beta.44",
|
|
77
|
+
"skydive-cli-linux-arm64": "0.6.0-beta.44"
|
|
78
78
|
}
|
|
79
79
|
}
|