skydive-cli 0.2.0-beta.608 → 0.2.0-beta.610

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,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { A as deleteConfig, B as resolveAppUrl, C as setActiveWorkspace, D as DEFAULT_API_URL, E as API_KEY_PREFIX, G as saveConfig, H as resolveManagementAuth, I as getShareMachineDefault, J as setLastSeenVersion, K as saveSession, L as getStoredApiKeyId, M as getLastSeenVersion, N as getPromptHistoryPath, R as getStoredApiKeyWorkspaceName, S as listWorkspaces, T as API_KEY_FAMILY_PREFIX, U as resolveSession, V as resolveConfig, X as version, Y as name, _ as themes, b as getActiveWorkspaceId, j as getConfigPath, k as DEFAULT_WEB_URL, o as brandHelpArt, t as installCrashHandler, w as API_KEYS_URL, x as getSessionIdentity, y as ensureActiveOrganization, z as getUpdateCheckDisabled } from "./install-B-9AJk0F.mjs";
2
+ import { A as deleteConfig, B as resolveAppUrl, C as setActiveWorkspace, D as DEFAULT_API_URL, E as API_KEY_PREFIX, G as saveConfig, H as resolveManagementAuth, I as getShareMachineDefault, J as setLastSeenVersion, K as saveSession, L as getStoredApiKeyId, M as getLastSeenVersion, N as getPromptHistoryPath, R as getStoredApiKeyWorkspaceName, S as listWorkspaces, T as API_KEY_FAMILY_PREFIX, U as resolveSession, V as resolveConfig, X as version, Y as name, _ as themes, b as getActiveWorkspaceId, j as getConfigPath, k as DEFAULT_WEB_URL, o as brandHelpArt, t as installCrashHandler, w as API_KEYS_URL, x as getSessionIdentity, y as ensureActiveOrganization, z as getUpdateCheckDisabled } from "./install-BDaFCeB_.mjs";
3
3
  import { n as printError, r as printTable, t as output } from "./output-B4cW10Ph.mjs";
4
4
  import { n as createRestClient } from "./rest-DMpigwmN.mjs";
5
5
  import { i as resolveAgent } from "./print-6Bm51XhR.mjs";
@@ -1195,7 +1195,7 @@ const importCommand = {
1195
1195
  process.exit(1);
1196
1196
  }
1197
1197
  }
1198
- const { runChat } = await import("./boot-B1AReDlO.mjs");
1198
+ const { runChat } = await import("./boot-DFERQrw5.mjs");
1199
1199
  await runChat({
1200
1200
  appUrl,
1201
1201
  sessionToken: session.value.sessionToken,
@@ -1511,7 +1511,7 @@ const chatCommand = {
1511
1511
  printError(`Unknown theme "${themeId}". Valid themes: ${themes.map((t) => t.id).join(", ")}`);
1512
1512
  process.exit(1);
1513
1513
  }
1514
- const { runChat } = await import("./boot-B1AReDlO.mjs");
1514
+ const { runChat } = await import("./boot-DFERQrw5.mjs");
1515
1515
  await runChat({
1516
1516
  appUrl,
1517
1517
  sessionToken: session.value.sessionToken,
@@ -1819,7 +1819,7 @@ const switchCommand = {
1819
1819
  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.");
1820
1820
  process.exit(1);
1821
1821
  }
1822
- const { runWorkspacePicker } = await import("./boot-B1AReDlO.mjs");
1822
+ const { runWorkspacePicker } = await import("./boot-DFERQrw5.mjs");
1823
1823
  await runWorkspacePicker(session);
1824
1824
  return;
1825
1825
  }
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { C as setActiveWorkspace, D as DEFAULT_API_URL, F as getSavedTheme, O as DEFAULT_APP_URL, P as getReviewStateDir, S as listWorkspaces, W as resolveWebUrl, 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, j as getConfigPath, l as findTheme, m as themeMode, n as buildCrashReport, p as themeForMode, q as saveTheme, r as writeCrashReport, s as DEFAULT_THEME_ID, t as installCrashHandler, u as monoTheme, v as themesForMode } from "./install-B-9AJk0F.mjs";
2
+ import { C as setActiveWorkspace, D as DEFAULT_API_URL, F as getSavedTheme, O as DEFAULT_APP_URL, P as getReviewStateDir, S as listWorkspaces, W as resolveWebUrl, 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, j as getConfigPath, l as findTheme, m as themeMode, n as buildCrashReport, p as themeForMode, q as saveTheme, r as writeCrashReport, s as DEFAULT_THEME_ID, t as installCrashHandler, u as monoTheme, v as themesForMode } from "./install-BDaFCeB_.mjs";
3
3
  import { a as errorMessage, i as sendErrorMessage, n as createRestClient, o as isRecord, r as errorDetail, t as HttpError } from "./rest-DMpigwmN.mjs";
4
4
  import { 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 } from "./print-6Bm51XhR.mjs";
5
5
  import "./api-BGWcPuik.mjs";
@@ -1072,19 +1072,42 @@ function windowStart(highlight, total, visible) {
1072
1072
 
1073
1073
  //#endregion
1074
1074
  //#region src/chat/tui/fuzzy.ts
1075
+ function keyAccessor(key) {
1076
+ return typeof key === "function" ? key : key.get;
1077
+ }
1078
+ function keyWeight(key) {
1079
+ return typeof key === "function" ? 1 : key.weight ?? 1;
1080
+ }
1075
1081
  /**
1076
1082
  * Rank `items` against `query` across multiple keys with fuzzysort — the
1077
1083
  * OpenCode pattern. An empty/whitespace query returns everything in the
1078
1084
  * caller's original order (fuzzysort has nothing to rank); otherwise items
1079
1085
  * where no key matches are dropped and the rest come back best-first.
1086
+ *
1087
+ * fuzzysort's default multi-key score is the *best* single key's raw score,
1088
+ * with every key weighted equally — so an exact word sitting in a low-priority
1089
+ * field (a message preview, a co-participant's name) beats a genuine but
1090
+ * slightly-fuzzier match in the title. When keys carry weights we instead rank
1091
+ * by the best *weighted* key score, so a title match wins ties (and near-ties)
1092
+ * against secondary fields. Per-key highlight indexes are unchanged; only the
1093
+ * ordering shifts.
1080
1094
  */
1081
1095
  function fuzzyFilter(query, items, keys) {
1082
1096
  const needle = query.trim();
1097
+ const accessors = keys.map(keyAccessor);
1083
1098
  if (!needle) return items.map((item) => ({
1084
1099
  item,
1085
1100
  highlights: keys.map(() => null)
1086
1101
  }));
1087
- return fuzzysort.go(needle, items, { keys: [...keys] }).map((result) => ({
1102
+ const weights = keys.map(keyWeight);
1103
+ const weighted = weights.some((w) => w !== 1);
1104
+ return fuzzysort.go(needle, items, {
1105
+ keys: accessors,
1106
+ ...weighted ? { scoreFn: (r) => Math.max(...weights.map((w, i) => {
1107
+ const keyResult = r[i];
1108
+ return keyResult ? keyResult.score * w : 0;
1109
+ })) } : {}
1110
+ }).map((result) => ({
1088
1111
  item: result.obj,
1089
1112
  highlights: keys.map((_key, i) => {
1090
1113
  const indexes = result[i]?.indexes;
@@ -1414,9 +1437,18 @@ function FilterableAgentList({ agents, scope, onPick }) {
1414
1437
  });
1415
1438
  }
1416
1439
  const agentKeys = [
1417
- (a) => a.name,
1418
- (a) => a.slug ?? "",
1419
- (a) => a.title ?? ""
1440
+ {
1441
+ get: (a) => a.name,
1442
+ weight: 1
1443
+ },
1444
+ {
1445
+ get: (a) => a.slug ?? "",
1446
+ weight: .6
1447
+ },
1448
+ {
1449
+ get: (a) => a.title ?? "",
1450
+ weight: .4
1451
+ }
1420
1452
  ];
1421
1453
 
1422
1454
  //#endregion
@@ -2278,9 +2310,18 @@ function conversationAgents(c) {
2278
2310
  return c.agents && c.agents.length > 0 ? c.agents : [c.agent];
2279
2311
  }
2280
2312
  const conversationKeys = [
2281
- (c) => singleLine(c.title ?? ""),
2282
- (c) => c.preview ?? "",
2283
- (c) => conversationAgents(c).map((a) => a.name).join(" ")
2313
+ {
2314
+ get: (c) => singleLine(c.title ?? ""),
2315
+ weight: 1
2316
+ },
2317
+ {
2318
+ get: (c) => c.preview ?? "",
2319
+ weight: .6
2320
+ },
2321
+ {
2322
+ get: (c) => conversationAgents(c).map((a) => a.name).join(" "),
2323
+ weight: .4
2324
+ }
2284
2325
  ];
2285
2326
  /**
2286
2327
  * Character indexes of the first case-insensitive occurrence of `needle` in
@@ -5960,9 +6001,18 @@ function FilterableModelList({ models, currentModel, modelLocked, agentId, onSel
5960
6001
  });
5961
6002
  }
5962
6003
  const modelKeys = [
5963
- (m) => m.displayName,
5964
- (m) => m.providerDisplay ?? "",
5965
- (m) => m.id
6004
+ {
6005
+ get: (m) => m.displayName,
6006
+ weight: 1
6007
+ },
6008
+ {
6009
+ get: (m) => m.providerDisplay ?? "",
6010
+ weight: .9
6011
+ },
6012
+ {
6013
+ get: (m) => m.id,
6014
+ weight: .9
6015
+ }
5966
6016
  ];
5967
6017
  /**
5968
6018
  * The REST error routes return `{ "error": "message" }`. Pull that out for a
@@ -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.608";
11
+ var version$1 = "0.2.0-beta.610";
12
12
 
13
13
  //#endregion
14
14
  //#region src/config.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skydive-cli",
3
- "version": "0.2.0-beta.608",
3
+ "version": "0.2.0-beta.610",
4
4
  "description": "Skydive CLI — cloud agents from the command line",
5
5
  "homepage": "https://skydive.com",
6
6
  "license": "MIT",