skydive-cli 0.6.0-beta.25 → 0.6.0-beta.27
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-KM9tlCQv.mjs → boot-CzrgHtPt.mjs} +61 -29
- package/dist/js/client-BbBxcmay.mjs +5 -0
- package/dist/js/{client-pKI_QTmT.mjs → client-DC2ivbJN.mjs} +1 -1
- package/dist/js/{daemon--k2fcWhI.mjs → daemon-CxlndJaI.mjs} +23 -3
- package/dist/js/{daemon-client-BxNqcNzX.mjs → daemon-client-DQXDHGUD.mjs} +1 -1
- package/dist/js/daemon-client-Ilk1sDhY.mjs +8 -0
- package/dist/js/{daemon-C8z0gjiS.mjs → daemon-mUUYnDlu.mjs} +2 -2
- package/dist/js/{install-cm5SdN8E.mjs → install-CQYnyhzY.mjs} +2 -2
- package/dist/js/{print-DxckoQq_.mjs → print-BcvDoSnU.mjs} +2 -2
- package/dist/js/{print-BjWK1R7z.mjs → print-BlZzj7yy.mjs} +1 -1
- package/dist/js/{print-share-C9wWXtly.mjs → print-share-DU94NbI4.mjs} +1 -1
- package/dist/js/{rest-D_Bz9P6h.mjs → rest-Cd88Ab8J.mjs} +1 -1
- package/dist/js/{rest-DyrLMPnC.mjs → rest-DlIgk561.mjs} +16 -8
- package/package.json +5 -5
- package/dist/js/client-LsfcGY1X.mjs +0 -5
- package/dist/js/daemon-client-hu2vyzDR.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 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-
|
|
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-DlIgk561.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-BlZzj7yy.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-CQYnyhzY.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-DC2ivbJN.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-CxlndJaI.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-
|
|
1589
|
+
const { runChat } = await import("./boot-CzrgHtPt.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-
|
|
1619
|
+
const { connectMachineShare } = await import("./print-share-DU94NbI4.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-
|
|
1627
|
+
const { runPrint } = await import("./print-BcvDoSnU.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-
|
|
2034
|
+
const { runChat } = await import("./boot-CzrgHtPt.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-
|
|
2118
|
+
const { runPrint, readStdin } = await import("./print-BcvDoSnU.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-
|
|
2148
|
+
const { connectMachineShare } = await import("./print-share-DU94NbI4.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-
|
|
2213
|
+
const { messageGet } = await import("./print-BcvDoSnU.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-
|
|
2416
|
+
const { runWorkspacePicker } = await import("./boot-CzrgHtPt.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-
|
|
2495
|
+
const { PortalDaemonClient } = await import("./daemon-client-Ilk1sDhY.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-
|
|
2853
|
-
const { resolveAgent } = await import("./print-
|
|
2852
|
+
const { createRestClient } = await import("./rest-Cd88Ab8J.mjs");
|
|
2853
|
+
const { resolveAgent } = await import("./print-BcvDoSnU.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-
|
|
3125
|
-
const { resolveAgent } = await import("./print-
|
|
3124
|
+
const { createRestClient } = await import("./rest-Cd88Ab8J.mjs");
|
|
3125
|
+
const { resolveAgent } = await import("./print-BcvDoSnU.mjs");
|
|
3126
3126
|
const client = createRestClient({
|
|
3127
3127
|
appUrl: session.appUrl,
|
|
3128
3128
|
sessionToken: session.sessionToken
|
|
@@ -4575,7 +4575,7 @@ if (process.argv.includes(UPDATE_WORKER_FLAG)) {
|
|
|
4575
4575
|
process.exit(0);
|
|
4576
4576
|
}
|
|
4577
4577
|
if (process.argv.includes(PORTAL_DAEMON_FLAG)) {
|
|
4578
|
-
const { runPortalDaemon } = await import("./daemon-
|
|
4578
|
+
const { runPortalDaemon } = await import("./daemon-mUUYnDlu.mjs");
|
|
4579
4579
|
runPortalDaemon(process.argv);
|
|
4580
4580
|
} else runCli();
|
|
4581
4581
|
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_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-
|
|
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-DlIgk561.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-BlZzj7yy.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-CQYnyhzY.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-DC2ivbJN.mjs";
|
|
8
8
|
import { t as defaultTlsCertSource } from "./tls-cert-Rua2oV7n.mjs";
|
|
9
9
|
import "./api-BFQ4PQDA.mjs";
|
|
10
|
-
import "./daemon
|
|
10
|
+
import "./daemon-CxlndJaI.mjs";
|
|
11
11
|
import { t as SandboxStream } from "./client-l6orYfqq.mjs";
|
|
12
|
-
import { t as PortalDaemonClient } from "./daemon-client-
|
|
12
|
+
import { t as PortalDaemonClient } from "./daemon-client-DQXDHGUD.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";
|
|
@@ -8654,9 +8654,19 @@ function formatChatFooterStatus({ runKind, ctrlCArmed, portalOpen, hasPendingSte
|
|
|
8654
8654
|
* appended only once something has chosen one — an agent with no stored level
|
|
8655
8655
|
* runs at the platform default, and naming a level it never picked would be a
|
|
8656
8656
|
* claim the footer can't back.
|
|
8657
|
-
|
|
8658
|
-
|
|
8659
|
-
|
|
8657
|
+
*
|
|
8658
|
+
* A thread that serves its own model reads differently from one following the
|
|
8659
|
+
* agent (ANY-8702): a differing `agentModel` gets a `thread` marker plus the
|
|
8660
|
+
* default it replaces — the "set and not the same as the default" case James
|
|
8661
|
+
* asked the footer to surface. Provenance is derived from the pair, not
|
|
8662
|
+
* carried as a flag (James, #24018 review). When the thread follows the
|
|
8663
|
+
* default — or the server predates pins and sends no `agentModel` — the model
|
|
8664
|
+
* renders bare exactly as before.
|
|
8665
|
+
*/
|
|
8666
|
+
function formatModelHint({ model, effort, agentModel }) {
|
|
8667
|
+
const effortPart = effort ? ` · ${effort}` : "";
|
|
8668
|
+
if (model === null || agentModel === null || agentModel === model) return `ctrl+p · ${model ?? "default"}${effortPart}`;
|
|
8669
|
+
return `ctrl+p · ${model} (thread) · agent default ${agentModel}${effortPart}`;
|
|
8660
8670
|
}
|
|
8661
8671
|
|
|
8662
8672
|
//#endregion
|
|
@@ -10683,8 +10693,11 @@ function ModelSwitcher({ models, initialSavedEfforts, floor, currentModel, curre
|
|
|
10683
10693
|
agentId,
|
|
10684
10694
|
model: model.id,
|
|
10685
10695
|
thinkingLevel: effort
|
|
10686
|
-
})
|
|
10687
|
-
|
|
10696
|
+
}).then((settled) => ({
|
|
10697
|
+
...settled,
|
|
10698
|
+
scope: "agent"
|
|
10699
|
+
}));
|
|
10700
|
+
const pick = conversationId ? await withAgentFallback(() => rest.setConversationModel({
|
|
10688
10701
|
conversationId,
|
|
10689
10702
|
agentId,
|
|
10690
10703
|
model: model.id,
|
|
@@ -10694,9 +10707,10 @@ function ModelSwitcher({ models, initialSavedEfforts, floor, currentModel, curre
|
|
|
10694
10707
|
pinUnsupported: false
|
|
10695
10708
|
};
|
|
10696
10709
|
onModelSelected({
|
|
10697
|
-
model: settled.model ?? model.id,
|
|
10698
|
-
effort: settled.thinkingLevel,
|
|
10699
|
-
pinUnsupported
|
|
10710
|
+
model: pick.settled.model ?? model.id,
|
|
10711
|
+
effort: pick.settled.thinkingLevel,
|
|
10712
|
+
pinUnsupported: pick.pinUnsupported,
|
|
10713
|
+
scope: pick.pinUnsupported ? "agent" : pick.settled.scope
|
|
10700
10714
|
});
|
|
10701
10715
|
} catch (err) {
|
|
10702
10716
|
failed(err);
|
|
@@ -10713,23 +10727,34 @@ function ModelSwitcher({ models, initialSavedEfforts, floor, currentModel, curre
|
|
|
10713
10727
|
});
|
|
10714
10728
|
if (model.id === currentModel) {
|
|
10715
10729
|
let pinUnsupported = false;
|
|
10716
|
-
|
|
10717
|
-
|
|
10718
|
-
|
|
10719
|
-
|
|
10720
|
-
|
|
10721
|
-
|
|
10722
|
-
|
|
10723
|
-
|
|
10724
|
-
|
|
10725
|
-
|
|
10726
|
-
|
|
10727
|
-
|
|
10728
|
-
|
|
10730
|
+
let scope = null;
|
|
10731
|
+
if (conversationId) {
|
|
10732
|
+
const result = await withAgentFallback(() => rest.setConversationModel({
|
|
10733
|
+
conversationId,
|
|
10734
|
+
agentId,
|
|
10735
|
+
model: model.id,
|
|
10736
|
+
thinkingLevel: level
|
|
10737
|
+
}), () => rest.updateAgentEffort({
|
|
10738
|
+
agentId,
|
|
10739
|
+
thinkingLevel: level
|
|
10740
|
+
}).then((settled) => ({
|
|
10741
|
+
...settled,
|
|
10742
|
+
scope: "agent"
|
|
10743
|
+
})));
|
|
10744
|
+
pinUnsupported = result.pinUnsupported;
|
|
10745
|
+
scope = result.settled.scope ?? null;
|
|
10746
|
+
} else {
|
|
10747
|
+
await rest.updateAgentEffort({
|
|
10748
|
+
agentId,
|
|
10749
|
+
thinkingLevel: level
|
|
10750
|
+
});
|
|
10751
|
+
scope = "agent";
|
|
10752
|
+
}
|
|
10729
10753
|
onEffortSelected({
|
|
10730
10754
|
effort: level,
|
|
10731
10755
|
label: effortLabel(model, level),
|
|
10732
|
-
pinUnsupported
|
|
10756
|
+
pinUnsupported,
|
|
10757
|
+
scope
|
|
10733
10758
|
});
|
|
10734
10759
|
return;
|
|
10735
10760
|
}
|
|
@@ -14037,6 +14062,7 @@ function ChatScreen({ agent, conversation, attachRunId, parentConversationId })
|
|
|
14037
14062
|
const [model, setModel] = useState(agent.model ?? null);
|
|
14038
14063
|
const [effort, setEffort] = useState(agent.thinkingLevel ?? null);
|
|
14039
14064
|
const [modelLocked, setModelLocked] = useState(agent.modelLocked ?? false);
|
|
14065
|
+
const [agentDefaultModel, setAgentDefaultModel] = useState(agent.model ?? null);
|
|
14040
14066
|
const [cardPickerOpen, setCardPickerOpen] = useState(false);
|
|
14041
14067
|
const [modelPickerView, setModelPickerView] = useState(null);
|
|
14042
14068
|
const modelPickerOpen = modelPickerView !== null;
|
|
@@ -14506,6 +14532,7 @@ function ChatScreen({ agent, conversation, attachRunId, parentConversationId })
|
|
|
14506
14532
|
setModel(event.model);
|
|
14507
14533
|
setEffort(event.thinkingLevel ?? null);
|
|
14508
14534
|
setModelLocked(event.modelLocked);
|
|
14535
|
+
setAgentDefaultModel(event.agentModel ?? null);
|
|
14509
14536
|
return;
|
|
14510
14537
|
}
|
|
14511
14538
|
if (event.kind === "conversation" && event.title) setChatTitle(event.title);
|
|
@@ -16123,7 +16150,11 @@ function ChatScreen({ agent, conversation, attachRunId, parentConversationId })
|
|
|
16123
16150
|
cardVerb,
|
|
16124
16151
|
nonWebChannel
|
|
16125
16152
|
]);
|
|
16126
|
-
const modelHint = formatModelHint(
|
|
16153
|
+
const modelHint = formatModelHint({
|
|
16154
|
+
model,
|
|
16155
|
+
effort,
|
|
16156
|
+
agentModel: agentDefaultModel
|
|
16157
|
+
});
|
|
16127
16158
|
if (askPrompt) return /* @__PURE__ */ jsx(AskPicker, {
|
|
16128
16159
|
questions: askPrompt.questions,
|
|
16129
16160
|
onSubmit: (text) => {
|
|
@@ -16155,6 +16186,7 @@ function ChatScreen({ agent, conversation, attachRunId, parentConversationId })
|
|
|
16155
16186
|
onModelSelected: (next) => {
|
|
16156
16187
|
setModel(next.model);
|
|
16157
16188
|
setEffort(next.effort);
|
|
16189
|
+
if (next.scope === "agent") setAgentDefaultModel(next.model);
|
|
16158
16190
|
setModelPickerView(null);
|
|
16159
16191
|
useStore.getState().showToast(next.pinUnsupported ? {
|
|
16160
16192
|
variant: "warning",
|
|
@@ -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 "1789697077";
|
|
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-DC2ivbJN.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";
|
|
@@ -73,17 +73,37 @@ function canonicalPortalAppUrl(appUrl) {
|
|
|
73
73
|
* every alias of one deployment (see {@link canonicalPortalAppUrl}) shares
|
|
74
74
|
* one. Kept under the OS temp dir because Unix socket paths are
|
|
75
75
|
* length-limited (~104 bytes on macOS).
|
|
76
|
+
*
|
|
77
|
+
* Darwin `sockaddr_un.sun_path` is 104 bytes including NUL (103 usable).
|
|
78
|
+
* `os.tmpdir()` on macOS is `$TMPDIR` (`/var/folders/<id>/T`, often ~50
|
|
79
|
+
* chars). Adding `skydive-portal-<user>-<hash>/daemon.sock` overruns that
|
|
80
|
+
* cap: bind() fails, the sidecar handshake still reports the long path, and
|
|
81
|
+
* connect() returns ENOENT (or Go's "path must be shorter than SUN_LEN").
|
|
82
|
+
* Stay in `os.tmpdir()` (do not relocate to `/tmp`) and shorten the leaf
|
|
83
|
+
* when the composed path would blow the cap. Windows named pipes have no
|
|
84
|
+
* sun_path, so they keep the long leaf.
|
|
76
85
|
*/
|
|
86
|
+
const SUN_PATH_MAX = 103;
|
|
77
87
|
function daemonPaths(appUrl) {
|
|
88
|
+
const parent = os.tmpdir();
|
|
78
89
|
const user = safeSegment(os.userInfo().username || "user");
|
|
79
90
|
const app = createHash("sha256").update(canonicalPortalAppUrl(appUrl)).digest("hex").slice(0, 12);
|
|
80
|
-
const dir = path.join(
|
|
81
|
-
|
|
91
|
+
const dir = path.join(parent, `skydive-portal-${user}-${app}`);
|
|
92
|
+
const paths = {
|
|
82
93
|
dir,
|
|
83
94
|
socketPath: path.join(dir, "daemon.sock"),
|
|
84
95
|
statePath: path.join(dir, "state.json"),
|
|
85
96
|
logPath: path.join(dir, "daemon.log")
|
|
86
97
|
};
|
|
98
|
+
if (process.platform === "win32" || Buffer.byteLength(paths.socketPath) <= SUN_PATH_MAX) return paths;
|
|
99
|
+
const short = createHash("sha256").update(`${os.userInfo().username || "user"}\0${canonicalPortalAppUrl(appUrl)}`).digest("hex").slice(0, 12);
|
|
100
|
+
const shortDir = path.join(parent, `skydive-p-${short}`);
|
|
101
|
+
return {
|
|
102
|
+
dir: shortDir,
|
|
103
|
+
socketPath: path.join(shortDir, "d.sock"),
|
|
104
|
+
statePath: path.join(shortDir, "state.json"),
|
|
105
|
+
logPath: path.join(shortDir, "daemon.log")
|
|
106
|
+
};
|
|
87
107
|
}
|
|
88
108
|
function safeSegment(value) {
|
|
89
109
|
return value.replace(/[^a-zA-Z0-9_-]/g, "").slice(0, 24) || "user";
|
|
@@ -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-CxlndJaI.mjs";
|
|
3
3
|
import { randomUUID } from "node:crypto";
|
|
4
4
|
import { connect } from "node:net";
|
|
5
5
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import "./client-
|
|
2
|
+
import "./client-DC2ivbJN.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-CxlndJaI.mjs";
|
|
6
6
|
|
|
7
7
|
export { runPortalDaemon };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { c as version$1 } from "./rest-
|
|
3
|
-
import { E as getConfigPath } from "./print-
|
|
2
|
+
import { c as version$1 } from "./rest-DlIgk561.mjs";
|
|
3
|
+
import { E as getConfigPath } from "./print-BlZzj7yy.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-DlIgk561.mjs";
|
|
3
|
+
import { a as runPrint, i as resolveAgent, n as messageGet, o as toPrintError, r as readStdin, t as collectRunText } from "./print-BlZzj7yy.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-DlIgk561.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-BbBxcmay.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-DlIgk561.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.27";
|
|
10
10
|
|
|
11
11
|
//#endregion
|
|
12
12
|
//#region src/chat/util.ts
|
|
@@ -303,11 +303,17 @@ function createRestClient({ appUrl, sessionToken, workspaceId }) {
|
|
|
303
303
|
thinkingLevel: agent.thinkingLevel ?? null
|
|
304
304
|
};
|
|
305
305
|
},
|
|
306
|
-
setConversationModel: async ({ conversationId, agentId, model, thinkingLevel }) =>
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
306
|
+
setConversationModel: async ({ conversationId, agentId, model, thinkingLevel }) => {
|
|
307
|
+
const settled = await post(`/api/v1/conversations/${conversationId}/model`, {
|
|
308
|
+
agentId,
|
|
309
|
+
model,
|
|
310
|
+
thinkingLevel
|
|
311
|
+
}, conversationModelResponseSchema);
|
|
312
|
+
return {
|
|
313
|
+
...settled,
|
|
314
|
+
scope: settled.scope ?? null
|
|
315
|
+
};
|
|
316
|
+
},
|
|
311
317
|
updateAgentEffort: async ({ agentId, thinkingLevel }) => {
|
|
312
318
|
const { agent } = await patchAgent(agentId, { thinkingLevel });
|
|
313
319
|
return { thinkingLevel: agent.thinkingLevel ?? null };
|
|
@@ -566,7 +572,8 @@ const freeFloorStateResponseSchema = z.object({ result: z.object({ data: z.objec
|
|
|
566
572
|
}).nullable() }) });
|
|
567
573
|
const conversationModelResponseSchema = z.object({
|
|
568
574
|
model: z.string().nullable(),
|
|
569
|
-
thinkingLevel: z.string().nullable()
|
|
575
|
+
thinkingLevel: z.string().nullable(),
|
|
576
|
+
scope: z.enum(["agent", "conversation"]).nullish()
|
|
570
577
|
});
|
|
571
578
|
const updateAgentResponseSchema = z.object({ agent: z.object({
|
|
572
579
|
model: z.string().nullable().optional(),
|
|
@@ -737,7 +744,8 @@ const conversationStreamEventSchema = z.discriminatedUnion("kind", [
|
|
|
737
744
|
id: z.string(),
|
|
738
745
|
model: z.string().nullable(),
|
|
739
746
|
modelLocked: z.boolean(),
|
|
740
|
-
thinkingLevel: z.string().nullish()
|
|
747
|
+
thinkingLevel: z.string().nullish(),
|
|
748
|
+
agentModel: z.string().nullish()
|
|
741
749
|
}),
|
|
742
750
|
z.object({
|
|
743
751
|
kind: z.literal("run"),
|
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.27",
|
|
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.27",
|
|
75
|
+
"skydive-cli-darwin-x64": "0.6.0-beta.27",
|
|
76
|
+
"skydive-cli-linux-x64": "0.6.0-beta.27",
|
|
77
|
+
"skydive-cli-linux-arm64": "0.6.0-beta.27"
|
|
78
78
|
}
|
|
79
79
|
}
|