skydive-cli 0.6.0-beta.30 → 0.6.0-beta.32

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 CHANGED
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
- import { c as version, s as name, t as createRestClient } from "./rest-D-QhD4Ey.mjs";
3
- import { A as getPromptHistoryPath, B as resolveConfig, D as getDefaultAgent, E as getConfigPath, F as getStoredApiKeyWorkspaceName, G as saveSession, H as resolveSession$1, I as getUpdateCheckDisabled, N as getShareMachineDefault, O as getLastSeenVersion, P as getStoredApiKeyId, R as resolveAppUrl, S as DEFAULT_API_URL, T as deleteConfig, V as resolveManagementAuth, W as saveConfig, b as API_KEY_FAMILY_PREFIX, i as resolveAgent$1, k as getPreference, q as setLastSeenVersion, w as PREFERENCES, x as API_KEY_PREFIX, y as API_KEYS_URL, z as resolveChatAuth } from "./print-DOGluqfs.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-D4zmUhGt.mjs";
2
+ import { c as version, s as name, t as createRestClient } from "./rest-auxSqWFu.mjs";
3
+ import { A as getPromptHistoryPath, B as resolveConfig, D as getDefaultAgent, E as getConfigPath, F as getStoredApiKeyWorkspaceName, G as saveSession, H as resolveSession$1, I as getUpdateCheckDisabled, N as getShareMachineDefault, O as getLastSeenVersion, P as getStoredApiKeyId, R as resolveAppUrl, S as DEFAULT_API_URL, T as deleteConfig, V as resolveManagementAuth, W as saveConfig, b as API_KEY_FAMILY_PREFIX, i as resolveAgent$1, k as getPreference, q as setLastSeenVersion, w as PREFERENCES, x as API_KEY_PREFIX, y as API_KEYS_URL, z as resolveChatAuth } from "./print-TrvfmcM_.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-Dnxzlb_s.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 { a as resolveMachineIdentity } from "./client-C6nIuyAZ.mjs";
8
+ import { a as resolveMachineIdentity } from "./client-CMx9dkLe.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-DJLsd6X4.mjs";
11
+ import { d as daemonPaths, i as queryDaemonStatus, n as ensureDaemonRunning, s as stopDaemon, u as PORTAL_DAEMON_FLAG } from "./daemon-BWLoKH4c.mjs";
12
12
  import { a as encodeFsRequest, i as decodeFsResponse, n as SANDBOX_STREAM_PATH, r as streamSpecToQuery, t as SandboxStream } from "./client-l6orYfqq.mjs";
13
13
  import { hideBin } from "yargs/helpers";
14
14
  import yargs from "yargs";
@@ -1586,7 +1586,7 @@ const importCommand = {
1586
1586
  process.exit(1);
1587
1587
  }
1588
1588
  }
1589
- const { runChat } = await import("./boot-DZqQZFlg.mjs");
1589
+ const { runChat } = await import("./boot-_akLSe7x.mjs");
1590
1590
  await runChat({
1591
1591
  appUrl,
1592
1592
  sessionToken: session.value.sessionToken,
@@ -1616,7 +1616,7 @@ async function runImportPrintMode({ argv, appUrl }) {
1616
1616
  printError(`${session.error.message} For non-interactive use, run \`skydive auth login --web\` first, or set SKYDIVE_SESSION_TOKEN.`);
1617
1617
  process.exit(1);
1618
1618
  }
1619
- const { connectMachineShare } = await import("./print-share-BsJI8x3l.mjs");
1619
+ const { connectMachineShare } = await import("./print-share-DKzYU1UK.mjs");
1620
1620
  const machineShare = await connectMachineShare({
1621
1621
  appUrl,
1622
1622
  sessionToken: session.value.sessionToken,
@@ -1624,7 +1624,7 @@ async function runImportPrintMode({ argv, appUrl }) {
1624
1624
  });
1625
1625
  const extra = (argv.print ?? "").trim();
1626
1626
  const prompt = buildImportSeedPrompt(process.cwd(), machineOsFromPlatform(process.platform)) + (extra ? `\n\nAdditional instructions: ${extra}` : "");
1627
- const { runPrint } = await import("./print-DjXrn_7U.mjs");
1627
+ const { runPrint } = await import("./print-gKftUGWQ.mjs");
1628
1628
  try {
1629
1629
  const result = await runPrint({
1630
1630
  appUrl,
@@ -2031,7 +2031,7 @@ const chatCommand = {
2031
2031
  sessionToken: auth.value.token,
2032
2032
  agentSelector: argv.agent ?? null
2033
2033
  });
2034
- const { runChat } = await import("./boot-DZqQZFlg.mjs");
2034
+ const { runChat } = await import("./boot-_akLSe7x.mjs");
2035
2035
  await runChat({
2036
2036
  appUrl: auth.value.appUrl,
2037
2037
  sessionToken: auth.value.token,
@@ -2115,7 +2115,7 @@ async function runPrintMode({ argv, appUrl }) {
2115
2115
  printError(`${auth.error.message} For non-interactive use, run \`skydive auth login\` first, or set SKYDIVE_API_KEY / SKYDIVE_SESSION_TOKEN.`);
2116
2116
  process.exit(1);
2117
2117
  }
2118
- const { runPrint, readStdin } = await import("./print-DjXrn_7U.mjs");
2118
+ const { runPrint, readStdin } = await import("./print-gKftUGWQ.mjs");
2119
2119
  const workspaceId = await resolveWorkspaceFlag({
2120
2120
  appUrl,
2121
2121
  sessionToken: auth.value.token,
@@ -2145,7 +2145,7 @@ async function runPrintMode({ argv, appUrl }) {
2145
2145
  process.exit(1);
2146
2146
  }
2147
2147
  } else {
2148
- const { connectMachineShare } = await import("./print-share-BsJI8x3l.mjs");
2148
+ const { connectMachineShare } = await import("./print-share-DKzYU1UK.mjs");
2149
2149
  machineShare = await connectMachineShare({
2150
2150
  appUrl: auth.value.appUrl,
2151
2151
  sessionToken: auth.value.token,
@@ -2210,7 +2210,7 @@ const getCommand$1 = {
2210
2210
  printError(`${auth.error.message} Run \`skydive auth login\` first, or set SKYDIVE_API_KEY / SKYDIVE_SESSION_TOKEN.`);
2211
2211
  process.exit(1);
2212
2212
  }
2213
- const { messageGet } = await import("./print-DjXrn_7U.mjs");
2213
+ const { messageGet } = await import("./print-gKftUGWQ.mjs");
2214
2214
  try {
2215
2215
  const result = await messageGet({
2216
2216
  appUrl: auth.value.appUrl,
@@ -2413,7 +2413,7 @@ const switchCommand = {
2413
2413
  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.");
2414
2414
  process.exit(1);
2415
2415
  }
2416
- const { runWorkspacePicker } = await import("./boot-DZqQZFlg.mjs");
2416
+ const { runWorkspacePicker } = await import("./boot-_akLSe7x.mjs");
2417
2417
  await runWorkspacePicker(session);
2418
2418
  return;
2419
2419
  }
@@ -2492,7 +2492,7 @@ const openCommand = {
2492
2492
  const agent = argv.agent ? resolveAgent$1((await fetchPortalDevices(session)).agents, argv.agent) : null;
2493
2493
  const cwd = argv.cwd ? path.resolve(argv.cwd) : process.cwd();
2494
2494
  const { machineName } = await resolveMachineIdentity(null);
2495
- const { PortalDaemonClient } = await import("./daemon-client-CoFALl4c.mjs");
2495
+ const { PortalDaemonClient } = await import("./daemon-client-CIx2GdNU.mjs");
2496
2496
  let lastLine = "";
2497
2497
  let signalConnected;
2498
2498
  const connected = new Promise((resolve) => {
@@ -2849,8 +2849,8 @@ const sandboxCommand = {
2849
2849
  }).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`"),
2850
2850
  handler: async (argv) => {
2851
2851
  const session = requireSession(argv);
2852
- const { createRestClient } = await import("./rest--lkwhdUi.mjs");
2853
- const { resolveAgent } = await import("./print-DjXrn_7U.mjs");
2852
+ const { createRestClient } = await import("./rest-CarClYdl.mjs");
2853
+ const { resolveAgent } = await import("./print-gKftUGWQ.mjs");
2854
2854
  const client = createRestClient({
2855
2855
  appUrl: session.appUrl,
2856
2856
  sessionToken: session.sessionToken
@@ -3121,8 +3121,8 @@ const fsEditCommand = {
3121
3121
  handler: async (argv) => {
3122
3122
  const session = requireSession(argv);
3123
3123
  const remotePath = argv.path;
3124
- const { createRestClient } = await import("./rest--lkwhdUi.mjs");
3125
- const { resolveAgent } = await import("./print-DjXrn_7U.mjs");
3124
+ const { createRestClient } = await import("./rest-CarClYdl.mjs");
3125
+ const { resolveAgent } = await import("./print-gKftUGWQ.mjs");
3126
3126
  const client = createRestClient({
3127
3127
  appUrl: session.appUrl,
3128
3128
  sessionToken: session.sessionToken
@@ -3784,7 +3784,8 @@ async function offerPackageManagerUpdate(opts) {
3784
3784
  function relaunchCli(argv = process.argv) {
3785
3785
  try {
3786
3786
  const [, script, ...rest] = argv;
3787
- spawn(process.execPath, script ? [script, ...rest] : rest, { stdio: "inherit" }).on("exit", (code) => process.exit(code ?? 0));
3787
+ const args = script?.startsWith("/$bunfs/") ? rest : script ? [script, ...rest] : rest;
3788
+ spawn(process.execPath, args, { stdio: "inherit" }).on("exit", (code) => process.exit(code ?? 0));
3788
3789
  } catch (_error) {
3789
3790
  process.exit(0);
3790
3791
  }
@@ -4575,7 +4576,7 @@ if (process.argv.includes(UPDATE_WORKER_FLAG)) {
4575
4576
  process.exit(0);
4576
4577
  }
4577
4578
  if (process.argv.includes(PORTAL_DAEMON_FLAG)) {
4578
- const { runPortalDaemon } = await import("./daemon-7UmxwQfJ.mjs");
4579
+ const { runPortalDaemon } = await import("./daemon-C1F4_zse.mjs");
4579
4580
  runPortalDaemon(process.argv);
4580
4581
  } else runCli();
4581
4582
  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-D-QhD4Ey.mjs";
3
- import { C as DEFAULT_APP_URL, E as getConfigPath, K as saveTheme, L as recordDefaultAgent, M as getSavedTheme, S as DEFAULT_API_URL, U as resolveWebUrl, _ as parseConnectCard, c as actionableCardVerb, d as parseOauthConnectParams, f as prioritizeActionableCards, g as computeSettledLabel, h as composeQuestionAnswer, i as resolveAgent, j as getReviewStateDir, l as cardActionErrorMessage, m as resolveConnectUrl, p as reconcileMaskedInput, s as MASK_CHAR, u as parseExternalOauthConnectParams, v as specKeyFor } from "./print-DOGluqfs.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-D4zmUhGt.mjs";
2
+ import { a as errorMessage, i as sendErrorMessage, n as errorDetail, o as isRecord, t as createRestClient } from "./rest-auxSqWFu.mjs";
3
+ import { C as DEFAULT_APP_URL, E as getConfigPath, K as saveTheme, L as recordDefaultAgent, M as getSavedTheme, S as DEFAULT_API_URL, U as resolveWebUrl, _ as parseConnectCard, c as actionableCardVerb, d as parseOauthConnectParams, f as prioritizeActionableCards, g as computeSettledLabel, h as composeQuestionAnswer, i as resolveAgent, j as getReviewStateDir, l as cardActionErrorMessage, m as resolveConnectUrl, p as reconcileMaskedInput, s as MASK_CHAR, u as parseExternalOauthConnectParams, v as specKeyFor } from "./print-TrvfmcM_.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-Dnxzlb_s.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 { t as PortalClient } from "./client-C6nIuyAZ.mjs";
7
+ import { t as PortalClient } from "./client-CMx9dkLe.mjs";
8
8
  import { t as defaultTlsCertSource } from "./tls-cert-Rua2oV7n.mjs";
9
9
  import "./api-BFQ4PQDA.mjs";
10
- import "./daemon-DJLsd6X4.mjs";
10
+ import "./daemon-BWLoKH4c.mjs";
11
11
  import { t as SandboxStream } from "./client-l6orYfqq.mjs";
12
- import { t as PortalDaemonClient } from "./daemon-client-BPy3PPu_.mjs";
12
+ import { t as PortalDaemonClient } from "./daemon-client-BovQtAEk.mjs";
13
13
  import { t as runRawPtyPassthrough } from "./raw-pty-dndn1Kxc.mjs";
14
14
  import * as os$1 from "node:os";
15
15
  import { homedir, platform, release, tmpdir } from "node:os";
@@ -8839,15 +8839,24 @@ function sidePanelPlacement({ open, width }) {
8839
8839
  * blank row between sections). Toggled with ctrl+s; placement and room
8840
8840
  * checks live in side-panel-layout.ts.
8841
8841
  *
8842
- * Sections are deliberately pluggable: the panel body is a stack of blocks,
8843
- * so costs, computer stats, etc. land here later without re-touching the
8844
- * chat.tsx layout.
8842
+ * Sections are deliberately pluggable: the panel body is a stack of blocks.
8843
+ * The first is Computer: the agent's live sandbox resource snapshot, polling
8844
+ * the same api-backed collector the /computer card uses (no exec, no wake).
8845
8845
  */
8846
- function SidePanel({ open, width, height, agentName, title }) {
8847
- if (sidePanelPlacement({
8846
+ /**
8847
+ * How often the panel's computer section re-reads the api snapshot, in ms.
8848
+ * Much faster than the transcript card's 30s so a sandbox starting mid-session
8849
+ * shows up quickly (the read is a Redis lookup the api answers from stored
8850
+ * state, never an exec); the numbers themselves still move only as fast as the
8851
+ * worker sweep that writes the sample, about every 60s.
8852
+ */
8853
+ const PANEL_POLL_INTERVAL_MS = 5e3;
8854
+ function SidePanel({ open, width, height, agentName, title, collectSandboxStats, pollMs }) {
8855
+ const placement = sidePanelPlacement({
8848
8856
  open,
8849
8857
  width
8850
- }) === "hidden") return null;
8858
+ });
8859
+ if (placement === "hidden") return null;
8851
8860
  themeVersion();
8852
8861
  return /* @__PURE__ */ jsx("box", {
8853
8862
  style: {
@@ -8861,13 +8870,13 @@ function SidePanel({ open, width, height, agentName, title }) {
8861
8870
  flexShrink: 0,
8862
8871
  flexDirection: "column"
8863
8872
  },
8864
- children: /* @__PURE__ */ jsx("box", {
8873
+ children: /* @__PURE__ */ jsxs("box", {
8865
8874
  style: {
8866
8875
  flexDirection: "column",
8867
8876
  gap: 2,
8868
8877
  flexShrink: 0
8869
8878
  },
8870
- children: /* @__PURE__ */ jsxs("box", {
8879
+ children: [/* @__PURE__ */ jsxs("box", {
8871
8880
  style: {
8872
8881
  flexDirection: "column",
8873
8882
  flexShrink: 0
@@ -8879,10 +8888,91 @@ function SidePanel({ open, width, height, agentName, title }) {
8879
8888
  fg: theme.dim,
8880
8889
  children: agentName
8881
8890
  })]
8882
- })
8891
+ }), /* @__PURE__ */ jsx(ComputerSection, {
8892
+ visible: placement === "side",
8893
+ collectSandboxStats,
8894
+ pollMs
8895
+ })]
8883
8896
  })
8884
8897
  }, "side-panel");
8885
8898
  }
8899
+ /**
8900
+ * The panel's Computer section: the sandbox cpu / memory / disk gauges, fed by
8901
+ * the same api-backed collector as the /computer card (no exec, no wake; an
8902
+ * idle agent gets an idle line at once). Polls on the card's 30s cadence while
8903
+ * visible, paused when the panel is closed or hidden.
8904
+ */
8905
+ function ComputerSection({ visible, collectSandboxStats, pollMs }) {
8906
+ const [stats, setStats] = useState(null);
8907
+ const [error, setError] = useState(null);
8908
+ const hasResolved = useRef(false);
8909
+ const [loading, setLoading] = useState(collectSandboxStats !== null);
8910
+ useEffect(() => {
8911
+ if (!visible || !collectSandboxStats) return;
8912
+ let cancelled = false;
8913
+ let timer = null;
8914
+ let inFlight = null;
8915
+ const tick = async () => {
8916
+ const collection = collectSandboxStats();
8917
+ inFlight = collection;
8918
+ const result = await collection.result;
8919
+ inFlight = null;
8920
+ if (cancelled) return;
8921
+ if (result.ok) {
8922
+ hasResolved.current = true;
8923
+ setStats(result.stats);
8924
+ setError(null);
8925
+ setLoading(false);
8926
+ } else if (!("aborted" in result)) {
8927
+ if (!hasResolved.current) setError(result.error);
8928
+ setLoading(false);
8929
+ }
8930
+ if (!cancelled) timer = setTimeout(tick, pollMs);
8931
+ };
8932
+ tick();
8933
+ return () => {
8934
+ cancelled = true;
8935
+ if (timer !== null) clearTimeout(timer);
8936
+ inFlight?.abort();
8937
+ };
8938
+ }, [
8939
+ visible,
8940
+ collectSandboxStats,
8941
+ pollMs
8942
+ ]);
8943
+ const gauges = stats === null ? [] : toGauges(stats);
8944
+ const labelWidth = 6;
8945
+ const barWidth = 8;
8946
+ return /* @__PURE__ */ jsxs("box", {
8947
+ style: {
8948
+ flexDirection: "column",
8949
+ flexShrink: 0
8950
+ },
8951
+ children: [
8952
+ /* @__PURE__ */ jsx("text", {
8953
+ fg: theme.muted,
8954
+ children: /* @__PURE__ */ jsx("b", { children: "computer" })
8955
+ }),
8956
+ loading && error === null && gauges.length === 0 ? /* @__PURE__ */ jsx("text", {
8957
+ fg: theme.dim,
8958
+ children: "reading sandbox stats…"
8959
+ }) : null,
8960
+ !loading && error !== null && gauges.length === 0 ? /* @__PURE__ */ jsxs("text", {
8961
+ fg: theme.error,
8962
+ children: ["couldn't read stats: ", error]
8963
+ }) : null,
8964
+ !loading && error === null && gauges.length === 0 ? /* @__PURE__ */ jsx("text", {
8965
+ fg: theme.dim,
8966
+ children: collectSandboxStats === null ? "no stats source" : "no sandbox running"
8967
+ }) : null,
8968
+ gauges.map((g) => /* @__PURE__ */ jsx(GaugeRow, {
8969
+ gauge: g,
8970
+ labelWidth,
8971
+ barWidth
8972
+ }, g.label))
8973
+ ]
8974
+ });
8975
+ }
8886
8976
 
8887
8977
  //#endregion
8888
8978
  //#region src/chat/tui/new-chat-splash.tsx
@@ -16782,7 +16872,9 @@ function ChatScreen({ agent, conversation, attachRunId, parentConversationId })
16782
16872
  width,
16783
16873
  height: bodyHeight,
16784
16874
  agentName: agent.name,
16785
- title: chatTitle
16875
+ title: chatTitle,
16876
+ collectSandboxStats: boundCollectSandboxStats,
16877
+ pollMs: PANEL_POLL_INTERVAL_MS
16786
16878
  }) : null
16787
16879
  ]
16788
16880
  });
@@ -16848,7 +16940,9 @@ function ChatScreen({ agent, conversation, attachRunId, parentConversationId })
16848
16940
  width,
16849
16941
  height: bodyHeight,
16850
16942
  agentName: agent.name,
16851
- title: chatTitle
16943
+ title: chatTitle,
16944
+ collectSandboxStats: boundCollectSandboxStats,
16945
+ pollMs: PANEL_POLL_INTERVAL_MS
16852
16946
  }) : null
16853
16947
  ]
16854
16948
  });
@@ -160,7 +160,7 @@ function errorMessage(err) {
160
160
  * the commit time of the built tree is one monotonic clock they share.
161
161
  */
162
162
  function portalDaemonBuild() {
163
- return "1790189602";
163
+ return "1790196207";
164
164
  }
165
165
  /**
166
166
  * Whether a client carrying `mine` should replace a running daemon carrying
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+ import { t as PortalClient } from "./client-CMx9dkLe.mjs";
3
+ import "./api-BFQ4PQDA.mjs";
4
+
5
+ export { PortalClient };
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { i as isRecord, n as isNewerBuild, r as portalDaemonBuild, t as PortalClient } from "./client-C6nIuyAZ.mjs";
2
+ import { i as isRecord, n as isNewerBuild, r as portalDaemonBuild, t as PortalClient } from "./client-CMx9dkLe.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,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
- import "./client-C6nIuyAZ.mjs";
2
+ import "./client-CMx9dkLe.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-DJLsd6X4.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-BWLoKH4c.mjs";
6
6
 
7
7
  export { runPortalDaemon };
@@ -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-DJLsd6X4.mjs";
2
+ import { d as daemonPaths, f as encodeLine, l as LOCAL_PROTOCOL_VERSION, m as parseDaemonMessage, n as ensureDaemonRunning, p as makeLineParser } from "./daemon-BWLoKH4c.mjs";
3
3
  import { randomUUID } from "node:crypto";
4
4
  import { connect } from "node:net";
5
5
 
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+ import "./client-CMx9dkLe.mjs";
3
+ import "./tls-cert-Rua2oV7n.mjs";
4
+ import "./api-BFQ4PQDA.mjs";
5
+ import "./daemon-BWLoKH4c.mjs";
6
+ import { t as PortalDaemonClient } from "./daemon-client-BovQtAEk.mjs";
7
+
8
+ export { PortalDaemonClient };
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
- import { c as version$1 } from "./rest-D-QhD4Ey.mjs";
3
- import { E as getConfigPath } from "./print-DOGluqfs.mjs";
2
+ import { c as version$1 } from "./rest-auxSqWFu.mjs";
3
+ import { E as getConfigPath } from "./print-TrvfmcM_.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-D-QhD4Ey.mjs";
2
+ import { a as errorMessage, i as sendErrorMessage, o as isRecord, t as createRestClient } from "./rest-auxSqWFu.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-D-QhD4Ey.mjs";
3
- import { a as runPrint, i as resolveAgent, n as messageGet, o as toPrintError, r as readStdin, t as collectRunText } from "./print-DOGluqfs.mjs";
2
+ import "./rest-auxSqWFu.mjs";
3
+ import { a as runPrint, i as resolveAgent, n as messageGet, o as toPrintError, r as readStdin, t as collectRunText } from "./print-TrvfmcM_.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-AlyJpq9J.mjs");
17
+ const { PortalClient } = await import("./client-KCnbZXqh.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-D-QhD4Ey.mjs";
2
+ import { i as sendErrorMessage, n as errorDetail, r as filenameFromContentDisposition, t as createRestClient } from "./rest-auxSqWFu.mjs";
3
3
  import { t as HttpError } from "./http-error-BF2NZZE3.mjs";
4
4
  import "./billing-blocked-D3l5kJlX.mjs";
5
5
 
@@ -6,7 +6,7 @@ import { createParser } from "eventsource-parser";
6
6
 
7
7
  //#region package.json
8
8
  var name = "skydive-cli";
9
- var version = "0.6.0-beta.30";
9
+ var version = "0.6.0-beta.32";
10
10
 
11
11
  //#endregion
12
12
  //#region src/chat/util.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skydive-cli",
3
- "version": "0.6.0-beta.30",
3
+ "version": "0.6.0-beta.32",
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.30",
75
- "skydive-cli-darwin-x64": "0.6.0-beta.30",
76
- "skydive-cli-linux-x64": "0.6.0-beta.30",
77
- "skydive-cli-linux-arm64": "0.6.0-beta.30"
74
+ "skydive-cli-darwin-arm64": "0.6.0-beta.32",
75
+ "skydive-cli-darwin-x64": "0.6.0-beta.32",
76
+ "skydive-cli-linux-x64": "0.6.0-beta.32",
77
+ "skydive-cli-linux-arm64": "0.6.0-beta.32"
78
78
  }
79
79
  }
@@ -1,5 +0,0 @@
1
- #!/usr/bin/env node
2
- import { t as PortalClient } from "./client-C6nIuyAZ.mjs";
3
- import "./api-BFQ4PQDA.mjs";
4
-
5
- export { PortalClient };
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env node
2
- import "./client-C6nIuyAZ.mjs";
3
- import "./tls-cert-Rua2oV7n.mjs";
4
- import "./api-BFQ4PQDA.mjs";
5
- import "./daemon-DJLsd6X4.mjs";
6
- import { t as PortalDaemonClient } from "./daemon-client-BPy3PPu_.mjs";
7
-
8
- export { PortalDaemonClient };