skydive-cli 0.2.0-beta.624 → 0.2.0-beta.626

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/README.md CHANGED
@@ -291,28 +291,31 @@ management API used by `agents`/`keys`.
291
291
 
292
292
  ### Keybindings
293
293
 
294
- | Context | Key | Action |
295
- | ------------------- | ------------- | ------------------------------------- |
296
- | Pickers | _type_ | filter the list |
297
- | Pickers | `↑` / `↓` | move selection |
298
- | Pickers | `↵` | open / select |
299
- | Pickers | `esc` | back |
300
- | Agent picker | `ctrl+n` | create an agent |
301
- | Agent picker | `ctrl+w` | switch workspace |
302
- | Agent picker | `tab` | toggle mine / whole-org agents |
303
- | Conversation picker | `ctrl+d` | delete the highlighted conversation |
304
- | Chat | `↵` | send (or queue, while streaming) |
305
- | Chat | `pgup`/`pgdn` | scroll the transcript |
306
- | Chat | `ctrl+c` | cancel the active run; again to quit |
307
- | Chat | `esc` | back to the conversation picker |
308
- | Chat | `ctrl+p` | switch model |
309
- | Chat | `ctrl+o` | switch theme |
310
- | Chat | `ctrl+t` | grant / revoke local machine access |
311
- | Chat | `ctrl+l` | open this conversation in the browser |
312
- | Chat | `ctrl+r` | run the newest pending connect card |
313
- | Chat | `ctrl+v` | paste an image from the clipboard |
314
- | Chat | `ctrl+x` | drop the most recently staged image |
315
- | Chat | `?` | show the keybinding reference |
294
+ | Context | Key | Action |
295
+ | ------------------- | ------------- | ------------------------------------------ |
296
+ | Pickers | _type_ | filter the list |
297
+ | Pickers | `↑` / `↓` | move selection |
298
+ | Pickers | `↵` | open / select |
299
+ | Pickers | `esc` | back |
300
+ | Agent picker | `ctrl+n` | create an agent |
301
+ | Agent picker | `ctrl+w` | switch workspace |
302
+ | Agent picker | `tab` | toggle mine / whole-org agents |
303
+ | Conversation picker | `ctrl+a` | archive / restore it for you only |
304
+ | Conversation picker | `ctrl+d` | delete the highlighted conversation |
305
+ | Conversation picker | `shift+tab` | show / hide the ones you archived |
306
+ | Chat | `↵` | send (or queue, while streaming) |
307
+ | Chat | `pgup`/`pgdn` | scroll the transcript |
308
+ | Chat | `ctrl+c` | cancel the active run; again to quit |
309
+ | Chat | `esc` | back to the conversation picker |
310
+ | Chat | `ctrl+a` | archive this conversation (empty composer) |
311
+ | Chat | `ctrl+p` | switch model |
312
+ | Chat | `ctrl+o` | switch theme |
313
+ | Chat | `ctrl+t` | grant / revoke local machine access |
314
+ | Chat | `ctrl+l` | open this conversation in the browser |
315
+ | Chat | `ctrl+r` | run the newest pending connect card |
316
+ | Chat | `ctrl+v` | paste an image from the clipboard |
317
+ | Chat | `ctrl+x` | drop the most recently staged image |
318
+ | Chat | `?` | show the keybinding reference |
316
319
 
317
320
  Messages typed while a response is streaming are **queued** and sent in
318
321
  order as each run finishes; `ctrl+c` cancels the current run and clears the
package/dist/js/bin.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { C as setActiveWorkspace, S as listWorkspaces, T as version, _ as themes, b as getActiveWorkspaceId, o as brandHelpArt, t as installCrashHandler, w as name, x as getSessionIdentity, y as ensureActiveOrganization } from "./install-DKTnh1gy.mjs";
2
+ import { C as setActiveWorkspace, S as listWorkspaces, T as version, _ as themes, b as getActiveWorkspaceId, o as brandHelpArt, t as installCrashHandler, w as name, x as getSessionIdentity, y as ensureActiveOrganization } from "./install-CQNnRJ0V.mjs";
3
3
  import { A as resolveAppUrl, C as getPromptHistoryPath, D as getStoredApiKeyId, E as getShareMachineDefault, F as saveConfig, I as saveSession, M as resolveManagementAuth, N as resolveSession, O as getStoredApiKeyWorkspaceName, R as setLastSeenVersion, S as getLastSeenVersion, _ as API_KEY_PREFIX, b as deleteConfig, g as API_KEY_FAMILY_PREFIX, h as API_KEYS_URL, i as resolveAgent, j as resolveConfig, k as getUpdateCheckDisabled, v as DEFAULT_API_URL, x as getConfigPath } from "./print-DaPpTqxu.mjs";
4
4
  import { n as printError, r as printTable, t as output } from "./output-DYzzdXYV.mjs";
5
5
  import { n as createRestClient } from "./rest-Q5yl_b2-.mjs";
@@ -1198,7 +1198,7 @@ const importCommand = {
1198
1198
  process.exit(1);
1199
1199
  }
1200
1200
  }
1201
- const { runChat } = await import("./boot-CI6nXtmu.mjs");
1201
+ const { runChat } = await import("./boot-Bk_R-SnG.mjs");
1202
1202
  await runChat({
1203
1203
  appUrl,
1204
1204
  sessionToken: session.value.sessionToken,
@@ -1514,7 +1514,7 @@ const chatCommand = {
1514
1514
  printError(`Unknown theme "${themeId}". Valid themes: ${themes.map((t) => t.id).join(", ")}`);
1515
1515
  process.exit(1);
1516
1516
  }
1517
- const { runChat } = await import("./boot-CI6nXtmu.mjs");
1517
+ const { runChat } = await import("./boot-Bk_R-SnG.mjs");
1518
1518
  await runChat({
1519
1519
  appUrl,
1520
1520
  sessionToken: session.value.sessionToken,
@@ -1822,7 +1822,7 @@ const switchCommand = {
1822
1822
  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.");
1823
1823
  process.exit(1);
1824
1824
  }
1825
- const { runWorkspacePicker } = await import("./boot-CI6nXtmu.mjs");
1825
+ const { runWorkspacePicker } = await import("./boot-Bk_R-SnG.mjs");
1826
1826
  await runWorkspacePicker(session);
1827
1827
  return;
1828
1828
  }
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { C as setActiveWorkspace, S as listWorkspaces, a as WORDMARK, b as getActiveWorkspaceId, c as applyTheme, d as noColorRequested, f as theme, g as themeVersion, h as themeModeFromColorFgBg, i as MARK_CELLS, l as findTheme, m as themeMode, n as buildCrashReport, p as themeForMode, r as writeCrashReport, s as DEFAULT_THEME_ID, t as installCrashHandler, u as monoTheme, v as themesForMode } from "./install-DKTnh1gy.mjs";
2
+ import { C as setActiveWorkspace, S as listWorkspaces, a as WORDMARK, b as getActiveWorkspaceId, c as applyTheme, d as noColorRequested, f as theme, g as themeVersion, h as themeModeFromColorFgBg, i as MARK_CELLS, l as findTheme, m as themeMode, n as buildCrashReport, p as themeForMode, r as writeCrashReport, s as DEFAULT_THEME_ID, t as installCrashHandler, u as monoTheme, v as themesForMode } from "./install-CQNnRJ0V.mjs";
3
3
  import { L as saveTheme, P as resolveWebUrl, T as getSavedTheme, c as cardActionErrorMessage, d as reconcileMaskedInput, f as resolveConnectUrl, i as resolveAgent, l as parseExternalOauthConnectParams, m as specKeyFor, p as parseConnectCard, s as MASK_CHAR, u as parseOauthConnectParams, v as DEFAULT_API_URL, w as getReviewStateDir, x as getConfigPath, y as DEFAULT_APP_URL } from "./print-DaPpTqxu.mjs";
4
4
  import { a as errorMessage, i as sendErrorMessage, n as createRestClient, o as isRecord, r as errorDetail, t as HttpError } from "./rest-Q5yl_b2-.mjs";
5
5
  import { t as PortalClient } from "./client-DT9bWi1D.mjs";
@@ -5480,6 +5480,10 @@ const keybindGroups = [
5480
5480
  keys: "exit",
5481
5481
  action: "quit (type it as a message)"
5482
5482
  },
5483
+ {
5484
+ keys: "ctrl+a",
5485
+ action: "archive this conversation (composer empty; hides it for you only)"
5486
+ },
5483
5487
  {
5484
5488
  keys: "ctrl+p",
5485
5489
  action: "switch model"
@@ -5966,6 +5970,13 @@ const slashCommands = [
5966
5970
  description: "start a new conversation with this agent",
5967
5971
  action: { kind: "new-conversation" }
5968
5972
  },
5973
+ {
5974
+ name: "archive",
5975
+ aliases: [],
5976
+ argsHint: null,
5977
+ description: "archive this conversation and hide it from your list",
5978
+ action: { kind: "archive-conversation" }
5979
+ },
5969
5980
  {
5970
5981
  name: "conversation",
5971
5982
  aliases: ["conversations", "conv"],
@@ -9107,6 +9118,7 @@ function routeInput(raw) {
9107
9118
  };
9108
9119
  }
9109
9120
  case "new-conversation":
9121
+ case "archive-conversation":
9110
9122
  case "model-picker":
9111
9123
  case "theme-picker":
9112
9124
  case "status":
@@ -10248,6 +10260,41 @@ function ChatScreen({ agent, conversation }) {
10248
10260
  agent,
10249
10261
  goTo
10250
10262
  ]);
10263
+ const archiveConversation = useCallback(() => {
10264
+ if (grantPrompt || credPrompt) return;
10265
+ if (runRef.current.kind !== "idle") {
10266
+ useStore.getState().showToast({ message: "finish or cancel the run first (ctrl+c)" });
10267
+ return;
10268
+ }
10269
+ if (!conversationId) {
10270
+ useStore.getState().showToast({ message: "nothing to archive yet — send a message to start this one" });
10271
+ return;
10272
+ }
10273
+ if (!rest) return;
10274
+ rest.setConversationArchived({
10275
+ conversationId,
10276
+ archived: true
10277
+ }).then(() => {
10278
+ useStore.getState().showToast({
10279
+ variant: "success",
10280
+ message: "archived — shift+tab in the picker shows it, ctrl+a restores"
10281
+ });
10282
+ goTo({
10283
+ kind: "conversation-picker",
10284
+ agent
10285
+ });
10286
+ }).catch((err) => useStore.getState().showToast({
10287
+ variant: "error",
10288
+ message: err instanceof HttpError && err.status === 404 ? "can't archive this one — it's already gone from your list" : `couldn't archive: ${errorMessage(err)}`
10289
+ }));
10290
+ }, [
10291
+ grantPrompt,
10292
+ credPrompt,
10293
+ conversationId,
10294
+ rest,
10295
+ goTo,
10296
+ agent
10297
+ ]);
10251
10298
  /**
10252
10299
  * Leave this conversation for another screen without ending its run: drop
10253
10300
  * our own SSE subscription and nothing else — never `rest.cancelRun` — so
@@ -10406,6 +10453,9 @@ function ChatScreen({ agent, conversation }) {
10406
10453
  case "sandbox-pty":
10407
10454
  runSandboxPty();
10408
10455
  break;
10456
+ case "archive-conversation":
10457
+ archiveConversation();
10458
+ break;
10409
10459
  case "new-conversation":
10410
10460
  if (runRef.current.kind !== "idle") {
10411
10461
  useStore.getState().showToast({ message: "finish or cancel the run first (ctrl+c)" });
@@ -10507,6 +10557,7 @@ function ChatScreen({ agent, conversation }) {
10507
10557
  runLocalShell,
10508
10558
  runSandboxExec,
10509
10559
  runSandboxPty,
10560
+ archiveConversation,
10510
10561
  leaveForScreen,
10511
10562
  openConversationRef,
10512
10563
  toggleShare,
@@ -10703,6 +10754,11 @@ function ChatScreen({ agent, conversation }) {
10703
10754
  setThemePickerOpen(true);
10704
10755
  return;
10705
10756
  }
10757
+ if (key.name === "a" && key.ctrl && input.trim() === "") {
10758
+ key.preventDefault();
10759
+ archiveConversation();
10760
+ return;
10761
+ }
10706
10762
  if (key.name === "?" && !key.ctrl && !key.meta && input.trim() === "") {
10707
10763
  composerRef.current?.clear();
10708
10764
  setInput("");
@@ -8,7 +8,7 @@ import fs from "node:fs";
8
8
 
9
9
  //#region package.json
10
10
  var name = "skydive-cli";
11
- var version$1 = "0.2.0-beta.624";
11
+ var version$1 = "0.2.0-beta.626";
12
12
 
13
13
  //#endregion
14
14
  //#region src/auth/organization.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skydive-cli",
3
- "version": "0.2.0-beta.624",
3
+ "version": "0.2.0-beta.626",
4
4
  "description": "Skydive CLI — cloud agents from the command line",
5
5
  "homepage": "https://skydive.com",
6
6
  "license": "MIT",