skydive-cli 0.6.0-beta.6 → 0.6.0-beta.8
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 +19 -19
- package/dist/js/{boot-Df8y2oFg.mjs → boot-BFduenNS.mjs} +55 -18
- package/dist/js/client-WZ78eOZx.mjs +5 -0
- package/dist/js/{client-DmiIfexg.mjs → client-rEnnRv0U.mjs} +1 -1
- package/dist/js/{daemon-Lw_woLoA.mjs → daemon-C6C2LWDy.mjs} +1 -1
- package/dist/js/{daemon-CvvYcLCx.mjs → daemon-CmVlMTQT.mjs} +2 -2
- package/dist/js/daemon-client-C84mPkWU.mjs +8 -0
- package/dist/js/{daemon-client-DihcsZTU.mjs → daemon-client-JI3fEdpn.mjs} +1 -1
- package/dist/js/{install-DxiY7U8T.mjs → install-C1tu92_y.mjs} +2 -2
- package/dist/js/{print-CxJPDFUJ.mjs → print-B-65miV-.mjs} +2 -2
- package/dist/js/{print-UKJsFlZI.mjs → print-BRfIIT7U.mjs} +1 -1
- package/dist/js/{print-share-DIwza60G.mjs → print-share-DWvirbNK.mjs} +1 -1
- package/dist/js/{rest-z7PWO39C.mjs → rest-C-lsyENQ.mjs} +1 -1
- package/dist/js/{rest-CohkoIVY.mjs → rest-Dspsplnl.mjs} +10 -1
- package/package.json +5 -5
- package/dist/js/client-CXE7DJvh.mjs +0 -5
- package/dist/js/daemon-client-CI6Kz1_g.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 { B as resolveSession$1, C as deleteConfig, D as getPreference, E as getLastSeenVersion, G as setLastSeenVersion, H as saveConfig, I as resolveAppUrl, L as resolveChatAuth, M as getStoredApiKeyId, N as getStoredApiKeyWorkspaceName, O as getPromptHistoryPath, P as getUpdateCheckDisabled, R as resolveConfig, S as PREFERENCES, T as getDefaultAgent, U as saveSession, _ as API_KEYS_URL, b as DEFAULT_API_URL, i as resolveAgent$1, j as getShareMachineDefault, v as API_KEY_FAMILY_PREFIX, w as getConfigPath, y as API_KEY_PREFIX, z as resolveManagementAuth } 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-Dspsplnl.mjs";
|
|
3
|
+
import { B as resolveSession$1, C as deleteConfig, D as getPreference, E as getLastSeenVersion, G as setLastSeenVersion, H as saveConfig, I as resolveAppUrl, L as resolveChatAuth, M as getStoredApiKeyId, N as getStoredApiKeyWorkspaceName, O as getPromptHistoryPath, P as getUpdateCheckDisabled, R as resolveConfig, S as PREFERENCES, T as getDefaultAgent, U as saveSession, _ as API_KEYS_URL, b as DEFAULT_API_URL, i as resolveAgent$1, j as getShareMachineDefault, v as API_KEY_FAMILY_PREFIX, w as getConfigPath, y as API_KEY_PREFIX, z as resolveManagementAuth } from "./print-BRfIIT7U.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-C1tu92_y.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-
|
|
8
|
+
import { a as resolveMachineIdentity } from "./client-rEnnRv0U.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-C6C2LWDy.mjs";
|
|
12
12
|
import { a as encodeFsRequest, i as decodeFsResponse, n as SANDBOX_STREAM_PATH, r as streamSpecToQuery, t as SandboxStream } from "./client-Btq6bMzX.mjs";
|
|
13
13
|
import { hideBin } from "yargs/helpers";
|
|
14
14
|
import yargs from "yargs";
|
|
@@ -1584,7 +1584,7 @@ const importCommand = {
|
|
|
1584
1584
|
process.exit(1);
|
|
1585
1585
|
}
|
|
1586
1586
|
}
|
|
1587
|
-
const { runChat } = await import("./boot-
|
|
1587
|
+
const { runChat } = await import("./boot-BFduenNS.mjs");
|
|
1588
1588
|
await runChat({
|
|
1589
1589
|
appUrl,
|
|
1590
1590
|
sessionToken: session.value.sessionToken,
|
|
@@ -1614,7 +1614,7 @@ async function runImportPrintMode({ argv, appUrl }) {
|
|
|
1614
1614
|
printError(`${session.error.message} For non-interactive use, run \`skydive auth login --web\` first, or set SKYDIVE_SESSION_TOKEN.`);
|
|
1615
1615
|
process.exit(1);
|
|
1616
1616
|
}
|
|
1617
|
-
const { connectMachineShare } = await import("./print-share-
|
|
1617
|
+
const { connectMachineShare } = await import("./print-share-DWvirbNK.mjs");
|
|
1618
1618
|
const machineShare = await connectMachineShare({
|
|
1619
1619
|
appUrl,
|
|
1620
1620
|
sessionToken: session.value.sessionToken,
|
|
@@ -1622,7 +1622,7 @@ async function runImportPrintMode({ argv, appUrl }) {
|
|
|
1622
1622
|
});
|
|
1623
1623
|
const extra = (argv.print ?? "").trim();
|
|
1624
1624
|
const prompt = buildImportSeedPrompt(process.cwd(), machineOsFromPlatform(process.platform)) + (extra ? `\n\nAdditional instructions: ${extra}` : "");
|
|
1625
|
-
const { runPrint } = await import("./print-
|
|
1625
|
+
const { runPrint } = await import("./print-B-65miV-.mjs");
|
|
1626
1626
|
try {
|
|
1627
1627
|
const result = await runPrint({
|
|
1628
1628
|
appUrl,
|
|
@@ -2029,7 +2029,7 @@ const chatCommand = {
|
|
|
2029
2029
|
sessionToken: auth.value.token,
|
|
2030
2030
|
agentSelector: argv.agent ?? null
|
|
2031
2031
|
});
|
|
2032
|
-
const { runChat } = await import("./boot-
|
|
2032
|
+
const { runChat } = await import("./boot-BFduenNS.mjs");
|
|
2033
2033
|
await runChat({
|
|
2034
2034
|
appUrl: auth.value.appUrl,
|
|
2035
2035
|
sessionToken: auth.value.token,
|
|
@@ -2113,7 +2113,7 @@ async function runPrintMode({ argv, appUrl }) {
|
|
|
2113
2113
|
printError(`${auth.error.message} For non-interactive use, run \`skydive auth login\` first, or set SKYDIVE_API_KEY / SKYDIVE_SESSION_TOKEN.`);
|
|
2114
2114
|
process.exit(1);
|
|
2115
2115
|
}
|
|
2116
|
-
const { runPrint, readStdin } = await import("./print-
|
|
2116
|
+
const { runPrint, readStdin } = await import("./print-B-65miV-.mjs");
|
|
2117
2117
|
const workspaceId = await resolveWorkspaceFlag({
|
|
2118
2118
|
appUrl,
|
|
2119
2119
|
sessionToken: auth.value.token,
|
|
@@ -2143,7 +2143,7 @@ async function runPrintMode({ argv, appUrl }) {
|
|
|
2143
2143
|
process.exit(1);
|
|
2144
2144
|
}
|
|
2145
2145
|
} else {
|
|
2146
|
-
const { connectMachineShare } = await import("./print-share-
|
|
2146
|
+
const { connectMachineShare } = await import("./print-share-DWvirbNK.mjs");
|
|
2147
2147
|
machineShare = await connectMachineShare({
|
|
2148
2148
|
appUrl: auth.value.appUrl,
|
|
2149
2149
|
sessionToken: auth.value.token,
|
|
@@ -2208,7 +2208,7 @@ const getCommand$1 = {
|
|
|
2208
2208
|
printError(`${auth.error.message} Run \`skydive auth login\` first, or set SKYDIVE_API_KEY / SKYDIVE_SESSION_TOKEN.`);
|
|
2209
2209
|
process.exit(1);
|
|
2210
2210
|
}
|
|
2211
|
-
const { messageGet } = await import("./print-
|
|
2211
|
+
const { messageGet } = await import("./print-B-65miV-.mjs");
|
|
2212
2212
|
try {
|
|
2213
2213
|
const result = await messageGet({
|
|
2214
2214
|
appUrl: auth.value.appUrl,
|
|
@@ -2411,7 +2411,7 @@ const switchCommand = {
|
|
|
2411
2411
|
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.");
|
|
2412
2412
|
process.exit(1);
|
|
2413
2413
|
}
|
|
2414
|
-
const { runWorkspacePicker } = await import("./boot-
|
|
2414
|
+
const { runWorkspacePicker } = await import("./boot-BFduenNS.mjs");
|
|
2415
2415
|
await runWorkspacePicker(session);
|
|
2416
2416
|
return;
|
|
2417
2417
|
}
|
|
@@ -2490,7 +2490,7 @@ const openCommand = {
|
|
|
2490
2490
|
const agent = argv.agent ? resolveAgent$1((await fetchPortalDevices(session)).agents, argv.agent) : null;
|
|
2491
2491
|
const cwd = argv.cwd ? path.resolve(argv.cwd) : process.cwd();
|
|
2492
2492
|
const { machineName } = await resolveMachineIdentity(null);
|
|
2493
|
-
const { PortalDaemonClient } = await import("./daemon-client-
|
|
2493
|
+
const { PortalDaemonClient } = await import("./daemon-client-C84mPkWU.mjs");
|
|
2494
2494
|
let lastLine = "";
|
|
2495
2495
|
let signalConnected;
|
|
2496
2496
|
const connected = new Promise((resolve) => {
|
|
@@ -2847,8 +2847,8 @@ const sandboxCommand = {
|
|
|
2847
2847
|
}).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`"),
|
|
2848
2848
|
handler: async (argv) => {
|
|
2849
2849
|
const session = requireSession(argv);
|
|
2850
|
-
const { createRestClient } = await import("./rest-
|
|
2851
|
-
const { resolveAgent } = await import("./print-
|
|
2850
|
+
const { createRestClient } = await import("./rest-C-lsyENQ.mjs");
|
|
2851
|
+
const { resolveAgent } = await import("./print-B-65miV-.mjs");
|
|
2852
2852
|
const client = createRestClient({
|
|
2853
2853
|
appUrl: session.appUrl,
|
|
2854
2854
|
sessionToken: session.sessionToken
|
|
@@ -3119,8 +3119,8 @@ const fsEditCommand = {
|
|
|
3119
3119
|
handler: async (argv) => {
|
|
3120
3120
|
const session = requireSession(argv);
|
|
3121
3121
|
const remotePath = argv.path;
|
|
3122
|
-
const { createRestClient } = await import("./rest-
|
|
3123
|
-
const { resolveAgent } = await import("./print-
|
|
3122
|
+
const { createRestClient } = await import("./rest-C-lsyENQ.mjs");
|
|
3123
|
+
const { resolveAgent } = await import("./print-B-65miV-.mjs");
|
|
3124
3124
|
const client = createRestClient({
|
|
3125
3125
|
appUrl: session.appUrl,
|
|
3126
3126
|
sessionToken: session.sessionToken
|
|
@@ -4573,7 +4573,7 @@ if (process.argv.includes(UPDATE_WORKER_FLAG)) {
|
|
|
4573
4573
|
process.exit(0);
|
|
4574
4574
|
}
|
|
4575
4575
|
if (process.argv.includes(PORTAL_DAEMON_FLAG)) {
|
|
4576
|
-
const { runPortalDaemon } = await import("./daemon-
|
|
4576
|
+
const { runPortalDaemon } = await import("./daemon-CmVlMTQT.mjs");
|
|
4577
4577
|
runPortalDaemon(process.argv);
|
|
4578
4578
|
} else runCli();
|
|
4579
4579
|
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 { A as getSavedTheme, F as recordDefaultAgent, V as resolveWebUrl, W as saveTheme, b as DEFAULT_API_URL, c as cardActionErrorMessage, d as reconcileMaskedInput, f as resolveConnectUrl, g as specKeyFor, h as parseConnectCard, i as resolveAgent, k as getReviewStateDir, l as parseExternalOauthConnectParams, m as computeSettledLabel, p as composeQuestionAnswer, s as MASK_CHAR, u as parseOauthConnectParams, w as getConfigPath, x as DEFAULT_APP_URL } 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-Dspsplnl.mjs";
|
|
3
|
+
import { A as getSavedTheme, F as recordDefaultAgent, V as resolveWebUrl, W as saveTheme, b as DEFAULT_API_URL, c as cardActionErrorMessage, d as reconcileMaskedInput, f as resolveConnectUrl, g as specKeyFor, h as parseConnectCard, i as resolveAgent, k as getReviewStateDir, l as parseExternalOauthConnectParams, m as computeSettledLabel, p as composeQuestionAnswer, s as MASK_CHAR, u as parseOauthConnectParams, w as getConfigPath, x as DEFAULT_APP_URL } from "./print-BRfIIT7U.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-C1tu92_y.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-
|
|
7
|
+
import { t as PortalClient } from "./client-rEnnRv0U.mjs";
|
|
8
8
|
import { t as defaultTlsCertSource } from "./tls-cert-Rua2oV7n.mjs";
|
|
9
9
|
import "./api-BFQ4PQDA.mjs";
|
|
10
|
-
import "./daemon-
|
|
10
|
+
import "./daemon-C6C2LWDy.mjs";
|
|
11
11
|
import { t as SandboxStream } from "./client-Btq6bMzX.mjs";
|
|
12
|
-
import { t as PortalDaemonClient } from "./daemon-client-
|
|
12
|
+
import { t as PortalDaemonClient } from "./daemon-client-JI3fEdpn.mjs";
|
|
13
13
|
import { t as runRawPtyPassthrough } from "./raw-pty-D5PhKZSl.mjs";
|
|
14
14
|
import * as os$1 from "node:os";
|
|
15
15
|
import { homedir, platform, release, tmpdir } from "node:os";
|
|
@@ -8397,6 +8397,10 @@ const keybindGroups = [
|
|
|
8397
8397
|
keys: "end",
|
|
8398
8398
|
action: "jump to latest (when scrolled up)"
|
|
8399
8399
|
},
|
|
8400
|
+
{
|
|
8401
|
+
keys: "ctrl+y",
|
|
8402
|
+
action: "jump back to your last message"
|
|
8403
|
+
},
|
|
8400
8404
|
{
|
|
8401
8405
|
keys: "click",
|
|
8402
8406
|
action: "expand a folded plan card back to its finished rows"
|
|
@@ -9725,13 +9729,18 @@ function effortLabel(model, level) {
|
|
|
9725
9729
|
* mounted, so the conversation, input draft, and any live run survive picking
|
|
9726
9730
|
* a model.
|
|
9727
9731
|
*
|
|
9728
|
-
*
|
|
9729
|
-
*
|
|
9730
|
-
*
|
|
9731
|
-
*
|
|
9732
|
-
*
|
|
9732
|
+
* Where a pick LANDS depends on whether the conversation exists yet
|
|
9733
|
+
* (ANY-4652). In a live thread it pins the model to that thread alone, so the
|
|
9734
|
+
* other sessions you have open keep the model they were already using. Before
|
|
9735
|
+
* the first message there is no thread to pin, so the pick moves the agent's
|
|
9736
|
+
* own default and therefore seeds the conversation about to start — the
|
|
9737
|
+
* ChatGPT/Claude behaviour.
|
|
9738
|
+
*
|
|
9739
|
+
* `tab` on a reasoning model opens its effort list instead, which is also
|
|
9740
|
+
* where `/effort` lands directly. Both callbacks hand the settled values back
|
|
9741
|
+
* to the chat screen so its status line updates without a round-trip.
|
|
9733
9742
|
*/
|
|
9734
|
-
function ModelPicker({ agentId, currentModel, currentEffort, modelLocked, initialView, onModelSelected, onEffortSelected, onCancel }) {
|
|
9743
|
+
function ModelPicker({ agentId, conversationId, currentModel, currentEffort, modelLocked, initialView, onModelSelected, onEffortSelected, onCancel }) {
|
|
9735
9744
|
const rest = useStore((s) => s.rest);
|
|
9736
9745
|
const [state, setState] = useState({ kind: "loading" });
|
|
9737
9746
|
useEffect(() => {
|
|
@@ -9780,6 +9789,7 @@ function ModelPicker({ agentId, currentModel, currentEffort, modelLocked, initia
|
|
|
9780
9789
|
modelLocked,
|
|
9781
9790
|
initialView,
|
|
9782
9791
|
agentId,
|
|
9792
|
+
conversationId,
|
|
9783
9793
|
onModelSelected,
|
|
9784
9794
|
onEffortSelected,
|
|
9785
9795
|
onCancel
|
|
@@ -9811,7 +9821,7 @@ function ModelPickerFrame({ hint, children }) {
|
|
|
9811
9821
|
]
|
|
9812
9822
|
});
|
|
9813
9823
|
}
|
|
9814
|
-
function ModelSwitcher({ models, initialSavedEfforts, currentModel, currentEffort, modelLocked, initialView, agentId, onModelSelected, onEffortSelected, onCancel }) {
|
|
9824
|
+
function ModelSwitcher({ models, initialSavedEfforts, currentModel, currentEffort, modelLocked, initialView, agentId, conversationId, onModelSelected, onEffortSelected, onCancel }) {
|
|
9815
9825
|
const rest = useStore((s) => s.rest);
|
|
9816
9826
|
const [savedEfforts, setSavedEfforts] = useState(initialSavedEfforts);
|
|
9817
9827
|
const [view, setView] = useState(() => {
|
|
@@ -9847,7 +9857,12 @@ function ModelSwitcher({ models, initialSavedEfforts, currentModel, currentEffor
|
|
|
9847
9857
|
setSaving(true);
|
|
9848
9858
|
setSaveError(null);
|
|
9849
9859
|
try {
|
|
9850
|
-
const settled = await rest.
|
|
9860
|
+
const settled = conversationId ? await rest.setConversationModel({
|
|
9861
|
+
conversationId,
|
|
9862
|
+
agentId,
|
|
9863
|
+
model: model.id,
|
|
9864
|
+
thinkingLevel: effort
|
|
9865
|
+
}) : await rest.updateAgentModel({
|
|
9851
9866
|
agentId,
|
|
9852
9867
|
model: model.id,
|
|
9853
9868
|
thinkingLevel: effort
|
|
@@ -9870,7 +9885,13 @@ function ModelSwitcher({ models, initialSavedEfforts, currentModel, currentEffor
|
|
|
9870
9885
|
thinkingLevel: level
|
|
9871
9886
|
});
|
|
9872
9887
|
if (model.id === currentModel) {
|
|
9873
|
-
await rest.
|
|
9888
|
+
if (conversationId) await rest.setConversationModel({
|
|
9889
|
+
conversationId,
|
|
9890
|
+
agentId,
|
|
9891
|
+
model: model.id,
|
|
9892
|
+
thinkingLevel: level
|
|
9893
|
+
});
|
|
9894
|
+
else await rest.updateAgentEffort({
|
|
9874
9895
|
agentId,
|
|
9875
9896
|
thinkingLevel: level
|
|
9876
9897
|
});
|
|
@@ -13259,6 +13280,17 @@ function ChatScreen({ agent, conversation, attachRunId, parentConversationId })
|
|
|
13259
13280
|
});
|
|
13260
13281
|
setScrolledUp(false);
|
|
13261
13282
|
}, []);
|
|
13283
|
+
const jumpToLastOwnMessage = useCallback(() => {
|
|
13284
|
+
const box = scrollRef.current;
|
|
13285
|
+
if (!box) return;
|
|
13286
|
+
const prompt = promptForTranscriptIndex(itemsRef.current, itemsRef.current.length - 1);
|
|
13287
|
+
const row = prompt ? transcriptRowRefs.current.get(prompt.id)?.row : null;
|
|
13288
|
+
if (!row) return;
|
|
13289
|
+
box.scrollTo({
|
|
13290
|
+
x: box.scrollLeft,
|
|
13291
|
+
y: box.scrollTop + (row.screenY - box.viewport.screenY)
|
|
13292
|
+
});
|
|
13293
|
+
}, []);
|
|
13262
13294
|
const scrolledUpRef = useRef(false);
|
|
13263
13295
|
useEffect(() => {
|
|
13264
13296
|
const id = setInterval(() => {
|
|
@@ -14961,7 +14993,7 @@ function ChatScreen({ agent, conversation, attachRunId, parentConversationId })
|
|
|
14961
14993
|
}
|
|
14962
14994
|
if (cardPickerOpen || askPromptOpen || modelPickerOpen || themePickerOpen || prPickerOpen || helpOpen || creditsOpen || bgTasksOpen) return;
|
|
14963
14995
|
if (grantPrompt) {
|
|
14964
|
-
if (key.name === "y") {
|
|
14996
|
+
if (key.name === "y" && !key.ctrl) {
|
|
14965
14997
|
confirmGrant();
|
|
14966
14998
|
return;
|
|
14967
14999
|
}
|
|
@@ -14971,7 +15003,7 @@ function ChatScreen({ agent, conversation, attachRunId, parentConversationId })
|
|
|
14971
15003
|
}
|
|
14972
15004
|
}
|
|
14973
15005
|
if (computePrompt) {
|
|
14974
|
-
if (key.name === "y") {
|
|
15006
|
+
if (key.name === "y" && !key.ctrl) {
|
|
14975
15007
|
decideCompute(computePrompt, "approve");
|
|
14976
15008
|
return;
|
|
14977
15009
|
}
|
|
@@ -14985,7 +15017,7 @@ function ChatScreen({ agent, conversation, attachRunId, parentConversationId })
|
|
|
14985
15017
|
}
|
|
14986
15018
|
}
|
|
14987
15019
|
if (restartConfirm) {
|
|
14988
|
-
if (key.name === "y") {
|
|
15020
|
+
if (key.name === "y" && !key.ctrl) {
|
|
14989
15021
|
setRestartConfirm(false);
|
|
14990
15022
|
runRestartComputer();
|
|
14991
15023
|
return;
|
|
@@ -15176,6 +15208,10 @@ function ChatScreen({ agent, conversation, attachRunId, parentConversationId })
|
|
|
15176
15208
|
jumpToBottom();
|
|
15177
15209
|
return;
|
|
15178
15210
|
}
|
|
15211
|
+
if (key.name === "y" && key.ctrl) {
|
|
15212
|
+
jumpToLastOwnMessage();
|
|
15213
|
+
return;
|
|
15214
|
+
}
|
|
15179
15215
|
if (key.name === "c" && key.ctrl) {
|
|
15180
15216
|
if (runRef.current.kind === "streaming") {
|
|
15181
15217
|
cancelRun();
|
|
@@ -15302,6 +15338,7 @@ function ChatScreen({ agent, conversation, attachRunId, parentConversationId })
|
|
|
15302
15338
|
});
|
|
15303
15339
|
if (modelPickerView) return /* @__PURE__ */ jsx(ModelPicker, {
|
|
15304
15340
|
agentId: agent.id,
|
|
15341
|
+
conversationId,
|
|
15305
15342
|
currentModel: model,
|
|
15306
15343
|
currentEffort: effort,
|
|
15307
15344
|
modelLocked,
|
|
@@ -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 "
|
|
163
|
+
return "1787880902";
|
|
164
164
|
}
|
|
165
165
|
/**
|
|
166
166
|
* Whether a client carrying `mine` should replace a running daemon carrying
|
|
@@ -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-
|
|
2
|
+
import { i as isRecord, n as isNewerBuild, r as portalDaemonBuild, t as PortalClient } from "./client-rEnnRv0U.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-
|
|
2
|
+
import "./client-rEnnRv0U.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-C6C2LWDy.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-
|
|
2
|
+
import { d as daemonPaths, f as encodeLine, l as LOCAL_PROTOCOL_VERSION, m as parseDaemonMessage, n as ensureDaemonRunning, p as makeLineParser } from "./daemon-C6C2LWDy.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 { w as getConfigPath } from "./print-
|
|
2
|
+
import { c as version$1 } from "./rest-Dspsplnl.mjs";
|
|
3
|
+
import { w as getConfigPath } from "./print-BRfIIT7U.mjs";
|
|
4
4
|
import os from "node:os";
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
import { err, ok } from "neverthrow";
|
|
@@ -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-Dspsplnl.mjs";
|
|
3
|
+
import { a as runPrint, i as resolveAgent, n as messageGet, o as toPrintError, r as readStdin, t as collectRunText } from "./print-BRfIIT7U.mjs";
|
|
4
4
|
import "./billing-blocked-D3l5kJlX.mjs";
|
|
5
5
|
|
|
6
6
|
export { messageGet, readStdin, resolveAgent, runPrint };
|
|
@@ -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-Dspsplnl.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";
|
|
@@ -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-WZ78eOZx.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-Dspsplnl.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.
|
|
9
|
+
var version = "0.6.0-beta.8";
|
|
10
10
|
|
|
11
11
|
//#endregion
|
|
12
12
|
//#region src/chat/util.ts
|
|
@@ -295,6 +295,11 @@ function createRestClient({ appUrl, sessionToken, workspaceId }) {
|
|
|
295
295
|
thinkingLevel: agent.thinkingLevel ?? null
|
|
296
296
|
};
|
|
297
297
|
},
|
|
298
|
+
setConversationModel: async ({ conversationId, agentId, model, thinkingLevel }) => post(`/api/v1/conversations/${conversationId}/model`, {
|
|
299
|
+
agentId,
|
|
300
|
+
model,
|
|
301
|
+
thinkingLevel
|
|
302
|
+
}, conversationModelResponseSchema),
|
|
298
303
|
updateAgentEffort: async ({ agentId, thinkingLevel }) => {
|
|
299
304
|
const { agent } = await patchAgent(agentId, { thinkingLevel });
|
|
300
305
|
return { thinkingLevel: agent.thinkingLevel ?? null };
|
|
@@ -541,6 +546,10 @@ const platformModelSchema = z.object({
|
|
|
541
546
|
}).passthrough();
|
|
542
547
|
const listModelsResponseSchema = z.object({ models: z.array(platformModelSchema) });
|
|
543
548
|
const modelEffortPreferencesResponseSchema = z.object({ modelConfigOverrides: z.record(z.string(), z.object({ thinkingLevel: z.string().optional() })).optional() });
|
|
549
|
+
const conversationModelResponseSchema = z.object({
|
|
550
|
+
model: z.string().nullable(),
|
|
551
|
+
thinkingLevel: z.string().nullable()
|
|
552
|
+
});
|
|
544
553
|
const updateAgentResponseSchema = z.object({ agent: z.object({
|
|
545
554
|
model: z.string().nullable().optional(),
|
|
546
555
|
thinkingLevel: z.string().nullable().optional()
|
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.8",
|
|
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.8",
|
|
75
|
+
"skydive-cli-darwin-x64": "0.6.0-beta.8",
|
|
76
|
+
"skydive-cli-linux-x64": "0.6.0-beta.8",
|
|
77
|
+
"skydive-cli-linux-arm64": "0.6.0-beta.8"
|
|
78
78
|
}
|
|
79
79
|
}
|