skykoi 2026.3.394 → 2026.3.395
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/build-info.json +3 -3
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{completion-cli-BR65MWyg.js → completion-cli-EZT_a2ap.js} +1 -1
- package/dist/{config-guard-n-QrH3kl.js → config-guard-fJKpR_SZ.js} +4 -4
- package/dist/{doctor-C64ZiCRM.js → doctor-CQGJdbYI.js} +1 -1
- package/dist/{doctor-completion-DUNhJ3N0.js → doctor-completion-CjjQQkQg.js} +1 -1
- package/dist/entry.js +1 -1
- package/dist/{gateway-cli-BtiEDdNq.js → gateway-cli-BYCYD6w4.js} +6 -6
- package/dist/{graphics-protocol-BK3QxOOc.js → graphics-protocol-K_Nx2CZD.js} +3 -2
- package/dist/{graphics-terminal-setup-DIkhgwxn.js → graphics-terminal-setup-cA9wTDpp.js} +1 -1
- package/dist/index.js +9 -9
- package/dist/{onboarding-CPjCBd7F.js → onboarding-HfPhiss5.js} +3 -3
- package/dist/plugin-sdk/index.js +12 -12
- package/dist/plugin-sdk/{pi-model-discovery-lynj0LAO.js → pi-model-discovery-ClImJtLC.js} +3 -3
- package/dist/{program-CfYKfdNq.js → program-BBeg0h5_.js} +3 -3
- package/dist/{register.subclis-C5iMbY81.js → register.subclis-BOfFB3d9.js} +4 -4
- package/dist/{run-main-DB-CAEbY.js → run-main-DgUWiP3B.js} +11 -11
- package/dist/{tui-YYjceSsK.js → tui-PxB-9vcf.js} +88 -3
- package/dist/{tui-cli-Ceeqn9FK.js → tui-cli-BXUAwzXh.js} +2 -2
- package/dist/{update-cli-CiHZKuyG.js → update-cli-8CGaId7j.js} +4 -4
- package/extensions/bluebubbles/package.json +1 -1
- package/extensions/copilot-proxy/package.json +1 -1
- package/extensions/diagnostics-otel/package.json +1 -1
- package/extensions/discord/package.json +1 -1
- package/extensions/feishu/package.json +1 -1
- package/extensions/google-antigravity-auth/package.json +1 -1
- package/extensions/google-gemini-cli-auth/package.json +1 -1
- package/extensions/googlechat/package.json +1 -1
- package/extensions/imessage/package.json +1 -1
- package/extensions/line/package.json +1 -1
- package/extensions/llm-task/package.json +1 -1
- package/extensions/lobster/package.json +1 -1
- package/extensions/matrix/CHANGELOG.md +5 -0
- package/extensions/matrix/package.json +1 -1
- package/extensions/mattermost/package.json +1 -1
- package/extensions/memory-core/package.json +1 -1
- package/extensions/memory-lancedb/package.json +1 -1
- package/extensions/minimax-portal-auth/package.json +1 -1
- package/extensions/msteams/CHANGELOG.md +5 -0
- package/extensions/msteams/package.json +1 -1
- package/extensions/nextcloud-talk/package.json +1 -1
- package/extensions/nostr/CHANGELOG.md +5 -0
- package/extensions/nostr/package.json +1 -1
- package/extensions/open-prose/package.json +1 -1
- package/extensions/signal/package.json +1 -1
- package/extensions/slack/package.json +1 -1
- package/extensions/telegram/package.json +1 -1
- package/extensions/tlon/package.json +1 -1
- package/extensions/twitch/CHANGELOG.md +5 -0
- package/extensions/twitch/package.json +1 -1
- package/extensions/voice-call/CHANGELOG.md +5 -0
- package/extensions/voice-call/package.json +1 -1
- package/extensions/whatsapp/package.json +1 -1
- package/extensions/zalo/CHANGELOG.md +5 -0
- package/extensions/zalo/package.json +1 -1
- package/extensions/zalouser/CHANGELOG.md +5 -0
- package/extensions/zalouser/package.json +1 -1
- package/package.json +1 -1
package/dist/build-info.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
240a280af1cd6fc4305a024e0cacff894f3d071ba62f5201a3252d6c7cfdf339
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as __exportAll } from "./chunk-D_gEzPfs.js";
|
|
2
2
|
import { g as resolveStateDir } from "./paths-VdmjGGyc.js";
|
|
3
|
-
import { n as registerSubCliByName, t as getSubCliEntries } from "./register.subclis-
|
|
3
|
+
import { n as registerSubCliByName, t as getSubCliEntries } from "./register.subclis-BOfFB3d9.js";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import os from "node:os";
|
|
6
6
|
import fs from "node:fs/promises";
|
|
@@ -28,7 +28,7 @@ import { t as resolveChannelDefaultAccountId } from "./helpers-C0u-oaDR.js";
|
|
|
28
28
|
import { n as logConfigUpdated, t as formatConfigPath } from "./logging-CE47aZcO.js";
|
|
29
29
|
import { t as WizardCancelledError } from "./prompts-D59uQQdA.js";
|
|
30
30
|
import { t as createClackPrompter } from "./clack-prompter-BbdTlNx8.js";
|
|
31
|
-
import { a as buildKoiSummaries, c as loadKoiIdentity, f as parseIdentityMarkdown, i as applyKoiConfig, l as pruneKoiConfig, n as statusCommand, o as findKoiEntryIndex, s as listKoiEntries, t as runOnboardingWizard, u as identityHasValues } from "./onboarding-
|
|
31
|
+
import { a as buildKoiSummaries, c as loadKoiIdentity, f as parseIdentityMarkdown, i as applyKoiConfig, l as pruneKoiConfig, n as statusCommand, o as findKoiEntryIndex, s as listKoiEntries, t as runOnboardingWizard, u as identityHasValues } from "./onboarding-HfPhiss5.js";
|
|
32
32
|
import { d as applyAuthChoice, f as applyOpenAIConfig, h as promptAuthChoiceGrouped, m as applyGoogleGeminiModelDefault, p as upsertSharedEnvVar, u as warnIfModelConfigLooksOff } from "./onboard-skills-B59kRT5k.js";
|
|
33
33
|
import { $ as setOpenrouterApiKey, C as applyMoonshotConfig, D as applyOpenrouterConfig, F as applyVercelAiGatewayConfig, J as setGeminiApiKey, K as setAnthropicApiKey, L as applyXaiConfig, N as applyVeniceConfig, Q as setOpencodeZenApiKey, V as applyZaiConfig, X as setMinimaxApiKey, Y as setKimiCodingApiKey, Z as setMoonshotApiKey, at as setXiaomiApiKey, et as setQianfanApiKey, f as applyOpencodeZenConfig, ft as buildTokenProfileId, g as applyMinimaxConfig, it as setXaiApiKey, j as applySyntheticConfig, k as applyQianfanConfig, m as applyMinimaxApiConfig, nt as setVeniceApiKey, ot as setZaiApiKey, pt as validateAnthropicSetupToken, q as setCloudflareAiGatewayConfig, rt as setVercelAiGatewayApiKey, tt as setSyntheticApiKey, v as applyAuthProfileConfig, w as applyMoonshotConfigCn, x as applyKimiCodeConfig, y as applyCloudflareAiGatewayConfig, z as applyXiaomiConfig } from "./github-copilot-auth-C5L0Qpft.js";
|
|
34
34
|
import { n as setupChannels } from "./onboard-channels-B1X24Kc5.js";
|
|
@@ -36,7 +36,7 @@ import { i as healthCommand } from "./health-format-CCsVCA7q.js";
|
|
|
36
36
|
import { t as renderTable } from "./table-BFIT6RB5.js";
|
|
37
37
|
import { t as resolveGatewayService } from "./service-CW9nUfWU.js";
|
|
38
38
|
import { r as isSystemdUserServiceAvailable } from "./systemd-fjt-WYE7.js";
|
|
39
|
-
import { l as getVerboseFlag, o as getFlagValue, r as registerSubCliCommands, s as getPositiveIntFlagValue, u as hasFlag } from "./register.subclis-
|
|
39
|
+
import { l as getVerboseFlag, o as getFlagValue, r as registerSubCliCommands, s as getPositiveIntFlagValue, u as hasFlag } from "./register.subclis-BOfFB3d9.js";
|
|
40
40
|
import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-Dl6NCQql.js";
|
|
41
41
|
import { t as formatHelpExamples } from "./help-format-VHofKIT0.js";
|
|
42
42
|
import { t as adminUnlockCommand } from "./admin-unlock-BbRriux7.js";
|
|
@@ -47,7 +47,7 @@ import { i as CONFIGURE_WIZARD_SECTIONS, n as configureCommand, r as configureCo
|
|
|
47
47
|
import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, r as isGatewayDaemonRuntime, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-CtqjzJUQ.js";
|
|
48
48
|
import { n as ensureSystemdUserLingerNonInteractive } from "./systemd-linger-T7_vGBN4.js";
|
|
49
49
|
import { t as loginCommand } from "./login-ByLDHO1i.js";
|
|
50
|
-
import { n as loadAndMaybeMigrateDoctorConfig, t as doctorCommand } from "./doctor-
|
|
50
|
+
import { n as loadAndMaybeMigrateDoctorConfig, t as doctorCommand } from "./doctor-CQGJdbYI.js";
|
|
51
51
|
import { fileURLToPath } from "node:url";
|
|
52
52
|
import fs from "node:fs";
|
|
53
53
|
import path from "node:path";
|
|
@@ -3106,7 +3106,7 @@ function registerLoginCommand(program) {
|
|
|
3106
3106
|
console.log(theme.muted(` user=${result.userId} org=${result.orgId}`));
|
|
3107
3107
|
}
|
|
3108
3108
|
if (opts.chat !== false && result.gatewayUrl && process.stdin.isTTY && process.stdout.isTTY) {
|
|
3109
|
-
const { runTui } = await import("./tui-
|
|
3109
|
+
const { runTui } = await import("./tui-PxB-9vcf.js").then((n) => n.n);
|
|
3110
3110
|
console.log(theme.muted("\n Opening your koi chat…\n"));
|
|
3111
3111
|
await runTui({
|
|
3112
3112
|
url: result.gatewayUrl,
|
|
@@ -34,7 +34,7 @@ import { a as repairLaunchAgentBootstrap, i as launchAgentPlistExists, n as isLa
|
|
|
34
34
|
import { r as isSystemdUserServiceAvailable } from "./systemd-fjt-WYE7.js";
|
|
35
35
|
import { t as readLastGatewayErrorLine } from "./diagnostics-DPRvn_ky.js";
|
|
36
36
|
import { t as collectChannelStatusIssues } from "./channels-status-issues-D92ZMiSY.js";
|
|
37
|
-
import { n as doctorShellCompletion } from "./doctor-completion-
|
|
37
|
+
import { n as doctorShellCompletion } from "./doctor-completion-CjjQQkQg.js";
|
|
38
38
|
import { n as resolveControlUiDistIndexHealth, r as resolveControlUiDistIndexPathForRoot } from "./control-ui-assets-Dcc_8tht.js";
|
|
39
39
|
import { a as gatewayInstallErrorHint, d as renderSystemNodeWarning, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, p as resolveSystemNodeInfo, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-CtqjzJUQ.js";
|
|
40
40
|
import { t as ensureSystemdUserLingerInteractive } from "./systemd-linger-T7_vGBN4.js";
|
|
@@ -3,7 +3,7 @@ import { r as resolveCliName, t as formatCliCommand } from "./command-format-DOY
|
|
|
3
3
|
import { t as VERSION } from "./version-BKRSzdyx.js";
|
|
4
4
|
import { t as note } from "./note-BDX6ZDm1.js";
|
|
5
5
|
import { c as compareSemverStrings, s as checkUpdateStatus } from "./update-runner-BTHuBI1s.js";
|
|
6
|
-
import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-
|
|
6
|
+
import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-EZT_a2ap.js";
|
|
7
7
|
import path from "node:path";
|
|
8
8
|
import { spawnSync } from "node:child_process";
|
|
9
9
|
|
package/dist/entry.js
CHANGED
|
@@ -247,7 +247,7 @@ if (!ensureExperimentalWarningSuppressed()) {
|
|
|
247
247
|
applyCliProfileEnv({ profile: parsed.profile });
|
|
248
248
|
process$1.argv = parsed.argv;
|
|
249
249
|
}
|
|
250
|
-
import("./run-main-
|
|
250
|
+
import("./run-main-DgUWiP3B.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
|
|
251
251
|
console.error("[SKYKOI] Failed to start CLI:", error instanceof Error ? error.stack ?? error.message : error);
|
|
252
252
|
process$1.exitCode = 1;
|
|
253
253
|
});
|
|
@@ -94,7 +94,7 @@ import { t as resolveChannelDefaultAccountId } from "./helpers-C0u-oaDR.js";
|
|
|
94
94
|
import "./logging-CE47aZcO.js";
|
|
95
95
|
import "./note-BDX6ZDm1.js";
|
|
96
96
|
import { t as WizardCancelledError } from "./prompts-D59uQQdA.js";
|
|
97
|
-
import { c as loadKoiIdentity, d as loadKoiIdentityFromWorkspace, i as applyKoiConfig, l as pruneKoiConfig, o as findKoiEntryIndex, r as getStatusSummary, s as listKoiEntries, t as runOnboardingWizard } from "./onboarding-
|
|
97
|
+
import { c as loadKoiIdentity, d as loadKoiIdentityFromWorkspace, i as applyKoiConfig, l as pruneKoiConfig, o as findKoiEntryIndex, r as getStatusSummary, s as listKoiEntries, t as runOnboardingWizard } from "./onboarding-HfPhiss5.js";
|
|
98
98
|
import { n as installSkill } from "./onboard-skills-B59kRT5k.js";
|
|
99
99
|
import "./github-copilot-auth-C5L0Qpft.js";
|
|
100
100
|
import "./onboard-channels-B1X24Kc5.js";
|
|
@@ -113,19 +113,19 @@ import { p as resolveGatewayStateDir } from "./systemd-fjt-WYE7.js";
|
|
|
113
113
|
import "./diagnostics-DPRvn_ky.js";
|
|
114
114
|
import "./node-service--cl-zK26.js";
|
|
115
115
|
import "./channels-status-issues-D92ZMiSY.js";
|
|
116
|
-
import "./doctor-completion-
|
|
117
|
-
import "./register.subclis-
|
|
116
|
+
import "./doctor-completion-CjjQQkQg.js";
|
|
117
|
+
import "./register.subclis-BOfFB3d9.js";
|
|
118
118
|
import { a as createOutboundSendDeps$1, i as resolveKoiOutboundTarget, r as resolveKoiDeliveryPlan, t as koiCommand } from "./koi-BrZ-QvlO.js";
|
|
119
119
|
import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-Dcc_8tht.js";
|
|
120
120
|
import "./daemon-runtime-CtqjzJUQ.js";
|
|
121
121
|
import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } from "./widearea-dns-DmDtfScg.js";
|
|
122
122
|
import { n as discoverGatewayBeacons } from "./bonjour-discovery-BcGs4w0m.js";
|
|
123
123
|
import "./ensure-local-gateway-nFYv6_lI.js";
|
|
124
|
-
import "./completion-cli-
|
|
124
|
+
import "./completion-cli-EZT_a2ap.js";
|
|
125
125
|
import "./service-audit-ESoCtKKk.js";
|
|
126
126
|
import { i as shouldIncludeHook, n as loadWorkspaceHookEntries, r as resolveHookConfig } from "./hooks-status-Bh2u_o5A.js";
|
|
127
|
-
import "./tui-
|
|
128
|
-
import "./graphics-protocol-
|
|
127
|
+
import "./tui-PxB-9vcf.js";
|
|
128
|
+
import "./graphics-protocol-K_Nx2CZD.js";
|
|
129
129
|
import { t as buildChannelAccountSnapshot } from "./status-PJY2Jbku.js";
|
|
130
130
|
import "./shared-C1BN86q0.js";
|
|
131
131
|
import { a as runDaemonStop, i as runDaemonStart, n as runDaemonStatus, o as runDaemonUninstall, r as runDaemonRestart, s as runDaemonInstall } from "./daemon-cli-B1J4fZj3.js";
|
|
@@ -116,7 +116,7 @@ var RawFrameStreamer = class {
|
|
|
116
116
|
* Emit one RGBA frame into a cell region (kitty scales to c×r cells).
|
|
117
117
|
* Returns true if it wrote. `frameIndex` dedupes repeats of the same frame.
|
|
118
118
|
*/
|
|
119
|
-
emit(sink, frame, region) {
|
|
119
|
+
emit(sink, frame, region, opts) {
|
|
120
120
|
if (!TEMPFILE_OK) return false;
|
|
121
121
|
if (frame.frameIndex === this.lastFrameIndex) return false;
|
|
122
122
|
try {
|
|
@@ -125,7 +125,8 @@ var RawFrameStreamer = class {
|
|
|
125
125
|
fs.writeFileSync(p, frame.data);
|
|
126
126
|
const b64 = Buffer.from(p).toString("base64");
|
|
127
127
|
const { col, row, cols, rows } = region;
|
|
128
|
-
|
|
128
|
+
const z = opts?.z !== void 0 ? `,z=${opts.z | 0}` : "";
|
|
129
|
+
sink(`\x1b7${csiMove(col, row)}\x1b_Ga=T,f=32,s=${frame.width},v=${frame.height},t=t,i=${this.id},q=2,C=1,c=${cols},r=${rows}${z};${b64}\x1b\\\x1b8`);
|
|
129
130
|
this.lastFrameIndex = frame.frameIndex;
|
|
130
131
|
return true;
|
|
131
132
|
} catch {
|
|
@@ -4,7 +4,7 @@ import "./theme-C5EwWDWE.js";
|
|
|
4
4
|
import "./ansi-By7x1TI7.js";
|
|
5
5
|
import "./boolean-D-3joTkO.js";
|
|
6
6
|
import { t as isTruthyEnvValue } from "./env-ChCKTuXK.js";
|
|
7
|
-
import { a as detectGraphicsProtocolFromEnv } from "./graphics-protocol-
|
|
7
|
+
import { a as detectGraphicsProtocolFromEnv } from "./graphics-protocol-K_Nx2CZD.js";
|
|
8
8
|
import fs from "node:fs";
|
|
9
9
|
import path from "node:path";
|
|
10
10
|
import os from "node:os";
|
package/dist/index.js
CHANGED
|
@@ -80,11 +80,11 @@ import { t as isMainModule } from "./is-main-D5NmXew9.js";
|
|
|
80
80
|
import { t as ensureSKYKOICliOnPath } from "./path-env-C0IwmyXV.js";
|
|
81
81
|
import { t as assertSupportedRuntime } from "./runtime-guard-DQEzrjPX.js";
|
|
82
82
|
import "./ports-CVcXIoyn.js";
|
|
83
|
-
import "./config-guard-
|
|
83
|
+
import "./config-guard-fJKpR_SZ.js";
|
|
84
84
|
import "./logging-CE47aZcO.js";
|
|
85
85
|
import "./note-BDX6ZDm1.js";
|
|
86
86
|
import "./clack-prompter-BbdTlNx8.js";
|
|
87
|
-
import "./onboarding-
|
|
87
|
+
import "./onboarding-HfPhiss5.js";
|
|
88
88
|
import "./onboard-skills-B59kRT5k.js";
|
|
89
89
|
import "./github-copilot-auth-C5L0Qpft.js";
|
|
90
90
|
import "./onboard-channels-B1X24Kc5.js";
|
|
@@ -103,8 +103,8 @@ import "./systemd-fjt-WYE7.js";
|
|
|
103
103
|
import "./diagnostics-DPRvn_ky.js";
|
|
104
104
|
import "./node-service--cl-zK26.js";
|
|
105
105
|
import "./channels-status-issues-D92ZMiSY.js";
|
|
106
|
-
import "./doctor-completion-
|
|
107
|
-
import "./register.subclis-
|
|
106
|
+
import "./doctor-completion-CjjQQkQg.js";
|
|
107
|
+
import "./register.subclis-BOfFB3d9.js";
|
|
108
108
|
import "./gateway-rpc-Dl6NCQql.js";
|
|
109
109
|
import "./help-format-VHofKIT0.js";
|
|
110
110
|
import "./admin-unlock-BbRriux7.js";
|
|
@@ -120,14 +120,14 @@ import "./ensure-local-gateway-nFYv6_lI.js";
|
|
|
120
120
|
import "./channel-auth-f9Rst6Fv.js";
|
|
121
121
|
import "./login-ByLDHO1i.js";
|
|
122
122
|
import "./auth-health-DydWZ4Iy.js";
|
|
123
|
-
import "./doctor-
|
|
124
|
-
import "./completion-cli-
|
|
123
|
+
import "./doctor-CQGJdbYI.js";
|
|
124
|
+
import "./completion-cli-EZT_a2ap.js";
|
|
125
125
|
import "./service-audit-ESoCtKKk.js";
|
|
126
126
|
import "./hooks-status-Bh2u_o5A.js";
|
|
127
|
-
import "./tui-
|
|
128
|
-
import "./graphics-protocol-
|
|
127
|
+
import "./tui-PxB-9vcf.js";
|
|
128
|
+
import "./graphics-protocol-K_Nx2CZD.js";
|
|
129
129
|
import "./channel-options-Cx5O8Vrm.js";
|
|
130
|
-
import { n as buildProgram } from "./program-
|
|
130
|
+
import { n as buildProgram } from "./program-BBeg0h5_.js";
|
|
131
131
|
import process from "node:process";
|
|
132
132
|
import { fileURLToPath } from "node:url";
|
|
133
133
|
|
|
@@ -38,12 +38,12 @@ import { t as readLastGatewayErrorLine } from "./diagnostics-DPRvn_ky.js";
|
|
|
38
38
|
import { t as resolveNodeService } from "./node-service--cl-zK26.js";
|
|
39
39
|
import { t as collectChannelStatusIssues } from "./channels-status-issues-D92ZMiSY.js";
|
|
40
40
|
import { i as redactSecrets, n as formatDuration$1, r as formatGatewayAuthUsed, t as formatAge$1 } from "./format-lvtLJpBH.js";
|
|
41
|
-
import { a as formatUpdateOneLiner, i as formatUpdateAvailableHint, o as getUpdateCheckResult, r as ensureCompletionCacheExists, s as resolveUpdateAvailability, t as checkShellCompletionStatus } from "./doctor-completion-
|
|
41
|
+
import { a as formatUpdateOneLiner, i as formatUpdateAvailableHint, o as getUpdateCheckResult, r as ensureCompletionCacheExists, s as resolveUpdateAvailability, t as checkShellCompletionStatus } from "./doctor-completion-CjjQQkQg.js";
|
|
42
42
|
import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-Dcc_8tht.js";
|
|
43
43
|
import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-CtqjzJUQ.js";
|
|
44
|
-
import { r as installCompletion } from "./completion-cli-
|
|
44
|
+
import { r as installCompletion } from "./completion-cli-EZT_a2ap.js";
|
|
45
45
|
import { t as buildWorkspaceHookStatus } from "./hooks-status-Bh2u_o5A.js";
|
|
46
|
-
import { t as runTui } from "./tui-
|
|
46
|
+
import { t as runTui } from "./tui-PxB-9vcf.js";
|
|
47
47
|
import fs from "node:fs";
|
|
48
48
|
import path from "node:path";
|
|
49
49
|
import os from "node:os";
|
package/dist/plugin-sdk/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { a as __toCommonJS, i as __require, o as __toESM, r as __exportAll, t as __commonJSMin } from "./chunk-D_gEzPfs.js";
|
|
2
|
-
import { a as require_jws, i as require_dist_cjs$1, n as LRUCache$1, o as require_safe_buffer, r as getOAuthProviders, s as getEnvApiKey } from "./pi-model-discovery-
|
|
2
|
+
import { a as require_jws, i as require_dist_cjs$1, n as LRUCache$1, o as require_safe_buffer, r as getOAuthProviders, s as getEnvApiKey } from "./pi-model-discovery-ClImJtLC.js";
|
|
3
3
|
import { t as require_dist_cjs$2 } from "./dist-cjs-B9iGzXDA.js";
|
|
4
4
|
import { C as require_dist_cjs$3, E as init_dist_es$1, M as require_dist_cjs$13, N as require_dist_cjs$12, T as dist_es_exports$1, a as require_dist_cjs$5, c as require_dist_cjs$17, d as require_dist_cjs$15, f as dist_es_exports, h as protocols_exports, i as require_dist_cjs$7, j as require_dist_cjs$14, l as require_dist_cjs$16, m as init_protocols, n as require_dist_cjs$10, o as require_dist_cjs$8, p as init_dist_es, r as require_dist_cjs$9, s as require_dist_cjs$11, t as require_dist_cjs$18, u as require_dist_cjs$6, w as require_dist_cjs$4 } from "./dist-cjs-Cpdu8jQP.js";
|
|
5
5
|
import { C as schema_exports, N as require_dist_cjs$21, P as require_dist_cjs$19, S as init_schema, t as require_dist_cjs$20 } from "./dist-cjs-BVSr8ctW.js";
|
|
@@ -21,7 +21,7 @@ import chalk, { Chalk } from "chalk";
|
|
|
21
21
|
import fs, { constants, createWriteStream, existsSync, promises, statSync } from "node:fs";
|
|
22
22
|
import path, { join } from "node:path";
|
|
23
23
|
import { Logger } from "tslog";
|
|
24
|
-
import
|
|
24
|
+
import json5 from "json5";
|
|
25
25
|
import os, { homedir, tmpdir } from "node:os";
|
|
26
26
|
import { promisify } from "node:util";
|
|
27
27
|
import fs$1 from "node:fs/promises";
|
|
@@ -42,7 +42,7 @@ import { mkdir, readFile, stat as stat$1, unlink, writeFile } from "fs/promises"
|
|
|
42
42
|
import { Readable as Readable$1 } from "node:stream";
|
|
43
43
|
import { pipeline as pipeline$1 } from "node:stream/promises";
|
|
44
44
|
import WebSocket, { WebSocket as WebSocket$1 } from "ws";
|
|
45
|
-
import
|
|
45
|
+
import AjvPkg from "ajv";
|
|
46
46
|
import lockfile from "proper-lockfile";
|
|
47
47
|
import { URL as URL$1 } from "url";
|
|
48
48
|
import "yaml";
|
|
@@ -2263,7 +2263,7 @@ function readLoggingConfig() {
|
|
|
2263
2263
|
try {
|
|
2264
2264
|
if (!fs.existsSync(configPath)) return;
|
|
2265
2265
|
const raw = fs.readFileSync(configPath, "utf-8");
|
|
2266
|
-
const logging =
|
|
2266
|
+
const logging = json5.parse(raw)?.logging;
|
|
2267
2267
|
if (!logging || typeof logging !== "object" || Array.isArray(logging)) return;
|
|
2268
2268
|
return logging;
|
|
2269
2269
|
} catch {
|
|
@@ -19093,7 +19093,7 @@ var IncludeProcessor = class IncludeProcessor {
|
|
|
19093
19093
|
};
|
|
19094
19094
|
const defaultResolver = {
|
|
19095
19095
|
readFile: (p) => fs.readFileSync(p, "utf-8"),
|
|
19096
|
-
parseJson: (raw) =>
|
|
19096
|
+
parseJson: (raw) => json5.parse(raw)
|
|
19097
19097
|
};
|
|
19098
19098
|
/**
|
|
19099
19099
|
* Resolves all $include directives in a parsed config object.
|
|
@@ -20603,7 +20603,7 @@ function loadPluginManifestRegistry(params) {
|
|
|
20603
20603
|
|
|
20604
20604
|
//#endregion
|
|
20605
20605
|
//#region src/plugins/schema-validator.ts
|
|
20606
|
-
const ajv$1 = new
|
|
20606
|
+
const ajv$1 = new AjvPkg({
|
|
20607
20607
|
allErrors: true,
|
|
20608
20608
|
strict: false,
|
|
20609
20609
|
removeAdditional: false
|
|
@@ -21791,18 +21791,18 @@ function resolveConfigPathForDeps(deps) {
|
|
|
21791
21791
|
function normalizeDeps(overrides = {}) {
|
|
21792
21792
|
return {
|
|
21793
21793
|
fs: overrides.fs ?? fs,
|
|
21794
|
-
json5: overrides.json5 ??
|
|
21794
|
+
json5: overrides.json5 ?? json5,
|
|
21795
21795
|
env: overrides.env ?? process.env,
|
|
21796
21796
|
homedir: overrides.homedir ?? os.homedir,
|
|
21797
21797
|
configPath: overrides.configPath ?? "",
|
|
21798
21798
|
logger: overrides.logger ?? console
|
|
21799
21799
|
};
|
|
21800
21800
|
}
|
|
21801
|
-
function parseConfigJson5(raw, json5 =
|
|
21801
|
+
function parseConfigJson5(raw, json5$1 = json5) {
|
|
21802
21802
|
try {
|
|
21803
21803
|
return {
|
|
21804
21804
|
ok: true,
|
|
21805
|
-
parsed: json5.parse(raw)
|
|
21805
|
+
parsed: json5$1.parse(raw)
|
|
21806
21806
|
};
|
|
21807
21807
|
} catch (err) {
|
|
21808
21808
|
return {
|
|
@@ -22316,7 +22316,7 @@ function loadSessionStore(storePath, opts = {}) {
|
|
|
22316
22316
|
let mtimeMs = getFileMtimeMs(storePath);
|
|
22317
22317
|
try {
|
|
22318
22318
|
const raw = fs.readFileSync(storePath, "utf-8");
|
|
22319
|
-
const parsed =
|
|
22319
|
+
const parsed = json5.parse(raw);
|
|
22320
22320
|
if (isSessionStoreRecord(parsed)) store = parsed;
|
|
22321
22321
|
mtimeMs = getFileMtimeMs(storePath) ?? mtimeMs;
|
|
22322
22322
|
} catch {}
|
|
@@ -48250,7 +48250,7 @@ const PROTOCOL_VERSION = 3;
|
|
|
48250
48250
|
|
|
48251
48251
|
//#endregion
|
|
48252
48252
|
//#region src/gateway/protocol/index.ts
|
|
48253
|
-
const ajv = new
|
|
48253
|
+
const ajv = new AjvPkg({
|
|
48254
48254
|
allErrors: true,
|
|
48255
48255
|
strict: false,
|
|
48256
48256
|
removeAdditional: false
|
|
@@ -68123,7 +68123,7 @@ function enqueueSystemEvent(text, options) {
|
|
|
68123
68123
|
const MODEL_CACHE = /* @__PURE__ */ new Map();
|
|
68124
68124
|
(async () => {
|
|
68125
68125
|
try {
|
|
68126
|
-
const { discoverAuthStorage, discoverModels } = await import("./pi-model-discovery-
|
|
68126
|
+
const { discoverAuthStorage, discoverModels } = await import("./pi-model-discovery-ClImJtLC.js").then((n) => n.t);
|
|
68127
68127
|
await ensureSKYKOIModelsJson(loadConfig());
|
|
68128
68128
|
const koiDir = resolveSKYKOIKoiDir();
|
|
68129
68129
|
const models = discoverModels(discoverAuthStorage(koiDir), koiDir).getAll();
|
|
@@ -34,7 +34,7 @@ import { access, mkdir, readFile, stat as stat$1, writeFile } from "fs/promises"
|
|
|
34
34
|
import Stream, { Readable as Readable$1 } from "node:stream";
|
|
35
35
|
import { finished } from "node:stream/promises";
|
|
36
36
|
import * as NodeWs from "ws";
|
|
37
|
-
import
|
|
37
|
+
import AjvPkg from "ajv";
|
|
38
38
|
import lockfile from "proper-lockfile";
|
|
39
39
|
import { fileURLToPath as fileURLToPath$1 } from "url";
|
|
40
40
|
import { TypeCompiler } from "@sinclair/typebox/compiler";
|
|
@@ -59699,7 +59699,7 @@ var require_dist$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
|
59699
59699
|
//#endregion
|
|
59700
59700
|
//#region node_modules/.pnpm/@mariozechner+pi-ai@0.52.8_patch_hash=f41b8429247a07c256a366fc8eddb44710b4e74212f25ffaf_aba27699dbfe3dddaa7a3984ad46615e/node_modules/@mariozechner/pi-ai/dist/utils/validation.js
|
|
59701
59701
|
var import_dist$1 = /* @__PURE__ */ __toESM(require_dist$1(), 1);
|
|
59702
|
-
const Ajv$1 =
|
|
59702
|
+
const Ajv$1 = AjvPkg.default || AjvPkg;
|
|
59703
59703
|
const addFormats = import_dist$1.default.default || import_dist$1.default;
|
|
59704
59704
|
const isBrowserExtension = typeof globalThis !== "undefined" && globalThis.chrome?.runtime?.id !== void 0;
|
|
59705
59705
|
let ajv = null;
|
|
@@ -174026,7 +174026,7 @@ var AuthStorage = class {
|
|
|
174026
174026
|
/**
|
|
174027
174027
|
* Model registry - manages built-in and custom models, provides API key resolution.
|
|
174028
174028
|
*/
|
|
174029
|
-
const Ajv =
|
|
174029
|
+
const Ajv = AjvPkg.default || AjvPkg;
|
|
174030
174030
|
const OpenRouterRoutingSchema = Type.Object({
|
|
174031
174031
|
only: Type.Optional(Type.Array(Type.String())),
|
|
174032
174032
|
order: Type.Optional(Type.Array(Type.String()))
|
|
@@ -5,10 +5,10 @@ import { n as replaceCliName, r as resolveCliName } from "./command-format-DOYW_
|
|
|
5
5
|
import { t as isTruthyEnvValue } from "./env-ChCKTuXK.js";
|
|
6
6
|
import { t as VERSION } from "./version-BKRSzdyx.js";
|
|
7
7
|
import { t as formatDocsLink } from "./links-CFNtV6AI.js";
|
|
8
|
-
import { i as registerProgramCommands, n as PLUGIN_CLI_COMMANDS, t as ensureConfigReady } from "./config-guard-
|
|
9
|
-
import { a as getCommandPath, d as hasHelpOrVersion, l as getVerboseFlag } from "./register.subclis-
|
|
8
|
+
import { i as registerProgramCommands, n as PLUGIN_CLI_COMMANDS, t as ensureConfigReady } from "./config-guard-fJKpR_SZ.js";
|
|
9
|
+
import { a as getCommandPath, d as hasHelpOrVersion, l as getVerboseFlag } from "./register.subclis-BOfFB3d9.js";
|
|
10
10
|
import { t as ensurePluginRegistryLoaded } from "./plugin-registry-Czs3kTVB.js";
|
|
11
|
-
import { a as hasEmittedCliBanner, i as formatCliBannerLine, r as emitCliBanner } from "./tui-
|
|
11
|
+
import { a as hasEmittedCliBanner, i as formatCliBannerLine, r as emitCliBanner } from "./tui-PxB-9vcf.js";
|
|
12
12
|
import { n as resolveCliChannelOptions } from "./channel-options-Cx5O8Vrm.js";
|
|
13
13
|
import { Command } from "commander";
|
|
14
14
|
|
|
@@ -124,7 +124,7 @@ const entries = [
|
|
|
124
124
|
name: "gateway",
|
|
125
125
|
description: "Gateway control",
|
|
126
126
|
register: async (program) => {
|
|
127
|
-
(await import("./gateway-cli-
|
|
127
|
+
(await import("./gateway-cli-BYCYD6w4.js")).registerGatewayCli(program);
|
|
128
128
|
}
|
|
129
129
|
},
|
|
130
130
|
{
|
|
@@ -194,7 +194,7 @@ const entries = [
|
|
|
194
194
|
name: "tui",
|
|
195
195
|
description: "Terminal UI",
|
|
196
196
|
register: async (program) => {
|
|
197
|
-
(await import("./tui-cli-
|
|
197
|
+
(await import("./tui-cli-BXUAwzXh.js")).registerTuiCli(program);
|
|
198
198
|
}
|
|
199
199
|
},
|
|
200
200
|
{
|
|
@@ -310,14 +310,14 @@ const entries = [
|
|
|
310
310
|
name: "update",
|
|
311
311
|
description: "CLI update helpers",
|
|
312
312
|
register: async (program) => {
|
|
313
|
-
(await import("./update-cli-
|
|
313
|
+
(await import("./update-cli-8CGaId7j.js")).registerUpdateCli(program);
|
|
314
314
|
}
|
|
315
315
|
},
|
|
316
316
|
{
|
|
317
317
|
name: "completion",
|
|
318
318
|
description: "Generate shell completion script",
|
|
319
319
|
register: async (program) => {
|
|
320
|
-
(await import("./completion-cli-
|
|
320
|
+
(await import("./completion-cli-EZT_a2ap.js").then((n) => n.n)).registerCompletionCli(program);
|
|
321
321
|
}
|
|
322
322
|
}
|
|
323
323
|
];
|
|
@@ -77,11 +77,11 @@ import "./deps-D0kF1Dtj.js";
|
|
|
77
77
|
import "./tailscale-B0Nz70aN.js";
|
|
78
78
|
import { t as ensureSKYKOICliOnPath } from "./path-env-C0IwmyXV.js";
|
|
79
79
|
import { t as assertSupportedRuntime } from "./runtime-guard-DQEzrjPX.js";
|
|
80
|
-
import { n as PLUGIN_CLI_COMMANDS, r as findRoutedCommand, t as ensureConfigReady } from "./config-guard-
|
|
80
|
+
import { n as PLUGIN_CLI_COMMANDS, r as findRoutedCommand, t as ensureConfigReady } from "./config-guard-fJKpR_SZ.js";
|
|
81
81
|
import "./logging-CE47aZcO.js";
|
|
82
82
|
import "./note-BDX6ZDm1.js";
|
|
83
83
|
import "./clack-prompter-BbdTlNx8.js";
|
|
84
|
-
import "./onboarding-
|
|
84
|
+
import "./onboarding-HfPhiss5.js";
|
|
85
85
|
import "./onboard-skills-B59kRT5k.js";
|
|
86
86
|
import "./github-copilot-auth-C5L0Qpft.js";
|
|
87
87
|
import "./onboard-channels-B1X24Kc5.js";
|
|
@@ -100,8 +100,8 @@ import "./systemd-fjt-WYE7.js";
|
|
|
100
100
|
import "./diagnostics-DPRvn_ky.js";
|
|
101
101
|
import "./node-service--cl-zK26.js";
|
|
102
102
|
import "./channels-status-issues-D92ZMiSY.js";
|
|
103
|
-
import "./doctor-completion-
|
|
104
|
-
import { a as getCommandPath, c as getPrimaryCommand, d as hasHelpOrVersion } from "./register.subclis-
|
|
103
|
+
import "./doctor-completion-CjjQQkQg.js";
|
|
104
|
+
import { a as getCommandPath, c as getPrimaryCommand, d as hasHelpOrVersion } from "./register.subclis-BOfFB3d9.js";
|
|
105
105
|
import "./gateway-rpc-Dl6NCQql.js";
|
|
106
106
|
import "./help-format-VHofKIT0.js";
|
|
107
107
|
import "./admin-unlock-BbRriux7.js";
|
|
@@ -117,12 +117,12 @@ import "./ensure-local-gateway-nFYv6_lI.js";
|
|
|
117
117
|
import "./channel-auth-f9Rst6Fv.js";
|
|
118
118
|
import "./login-ByLDHO1i.js";
|
|
119
119
|
import "./auth-health-DydWZ4Iy.js";
|
|
120
|
-
import "./doctor-
|
|
121
|
-
import "./completion-cli-
|
|
120
|
+
import "./doctor-CQGJdbYI.js";
|
|
121
|
+
import "./completion-cli-EZT_a2ap.js";
|
|
122
122
|
import "./service-audit-ESoCtKKk.js";
|
|
123
123
|
import "./hooks-status-Bh2u_o5A.js";
|
|
124
|
-
import { r as emitCliBanner } from "./tui-
|
|
125
|
-
import "./graphics-protocol-
|
|
124
|
+
import { r as emitCliBanner } from "./tui-PxB-9vcf.js";
|
|
125
|
+
import "./graphics-protocol-K_Nx2CZD.js";
|
|
126
126
|
import process$1 from "node:process";
|
|
127
127
|
import { fileURLToPath } from "node:url";
|
|
128
128
|
import fs from "node:fs";
|
|
@@ -176,7 +176,7 @@ async function runCli(argv = process$1.argv) {
|
|
|
176
176
|
assertSupportedRuntime();
|
|
177
177
|
if (await tryRouteCli(normalizedArgv)) return;
|
|
178
178
|
enableConsoleCapture();
|
|
179
|
-
const { buildProgram } = await import("./program-
|
|
179
|
+
const { buildProgram } = await import("./program-BBeg0h5_.js").then((n) => n.t);
|
|
180
180
|
const program = buildProgram();
|
|
181
181
|
installUnhandledRejectionHandler();
|
|
182
182
|
process$1.on("uncaughtException", (error) => {
|
|
@@ -206,14 +206,14 @@ async function runCli(argv = process$1.argv) {
|
|
|
206
206
|
}
|
|
207
207
|
} catch {}
|
|
208
208
|
if (defaultCommand === "tui") try {
|
|
209
|
-
const { maybeRelaunchInGraphicsTerminal } = await import("./graphics-terminal-setup-
|
|
209
|
+
const { maybeRelaunchInGraphicsTerminal } = await import("./graphics-terminal-setup-cA9wTDpp.js");
|
|
210
210
|
if (await maybeRelaunchInGraphicsTerminal()) return;
|
|
211
211
|
} catch {}
|
|
212
212
|
parseArgv = [...parseArgv, defaultCommand];
|
|
213
213
|
}
|
|
214
214
|
const primary = getPrimaryCommand(parseArgv);
|
|
215
215
|
if (primary) {
|
|
216
|
-
const { registerSubCliByName } = await import("./register.subclis-
|
|
216
|
+
const { registerSubCliByName } = await import("./register.subclis-BOfFB3d9.js").then((n) => n.i);
|
|
217
217
|
await registerSubCliByName(program, primary);
|
|
218
218
|
}
|
|
219
219
|
if (!!primary && PLUGIN_CLI_COMMANDS.has(primary)) {
|
|
@@ -20,7 +20,7 @@ import { n as formatAge, r as resolveCommitHash } from "./channel-summary-576jRi
|
|
|
20
20
|
import { i as resolveModelCostConfig, n as formatTokenCount, r as formatUsd, t as estimateUsageCost } from "./usage-format-EdDmn0JB.js";
|
|
21
21
|
import { n as readSkykoiEnvVar } from "./dotenv-Y3WsO11w.js";
|
|
22
22
|
import { t as ensureLocalGatewayRunning } from "./ensure-local-gateway-nFYv6_lI.js";
|
|
23
|
-
import { a as detectGraphicsProtocolFromEnv, c as hasTempFileSupport, d as setProbedProtocol, f as setTempFileSupport, i as detectGraphicsProtocol, l as kittyDeleteAll, n as RawFrameStreamer, o as extractProbeResponses, r as buildGraphicsProbeQuery, s as getCellPixels, t as GraphicsMedia, u as setCellPixels } from "./graphics-protocol-
|
|
23
|
+
import { a as detectGraphicsProtocolFromEnv, c as hasTempFileSupport, d as setProbedProtocol, f as setTempFileSupport, i as detectGraphicsProtocol, l as kittyDeleteAll, n as RawFrameStreamer, o as extractProbeResponses, r as buildGraphicsProbeQuery, s as getCellPixels, t as GraphicsMedia, u as setCellPixels } from "./graphics-protocol-K_Nx2CZD.js";
|
|
24
24
|
import chalk from "chalk";
|
|
25
25
|
import fs, { existsSync, mkdtempSync, readFileSync, realpathSync, rmSync, watch, writeFileSync } from "node:fs";
|
|
26
26
|
import path, { dirname, join } from "node:path";
|
|
@@ -7653,7 +7653,8 @@ function createSpecScene(spec) {
|
|
|
7653
7653
|
lastT = t;
|
|
7654
7654
|
ensureCa();
|
|
7655
7655
|
feedCa();
|
|
7656
|
-
|
|
7656
|
+
const fillBg = caActive() && caSourceLayer < 0 ? -1 : bg;
|
|
7657
|
+
for (let y = 0; y < grid.h; y++) for (let x = 0; x < grid.w; x++) grid.set(x, y, " ", -1, fillBg);
|
|
7657
7658
|
for (const [i, layer] of layers.entries()) {
|
|
7658
7659
|
const type = String(layer.type ?? "");
|
|
7659
7660
|
try {
|
|
@@ -7736,12 +7737,13 @@ function createSpecScene(spec) {
|
|
|
7736
7737
|
const frame = caFrame;
|
|
7737
7738
|
if (frame) {
|
|
7738
7739
|
const rows = Math.max(1, lastH - CANVAS_CHAT_RESERVE);
|
|
7740
|
+
const z = caSourceLayer >= 0 ? void 0 : -1;
|
|
7739
7741
|
if (caStreamer.emit(sink, frame, {
|
|
7740
7742
|
col: 0,
|
|
7741
7743
|
row: 0,
|
|
7742
7744
|
cols: lastW,
|
|
7743
7745
|
rows
|
|
7744
|
-
})) any = true;
|
|
7746
|
+
}, { z })) any = true;
|
|
7745
7747
|
}
|
|
7746
7748
|
ca.step(lastT, SIM_DT).then((f) => {
|
|
7747
7749
|
if (f) caFrame = f;
|
|
@@ -8186,6 +8188,51 @@ function buildScene(input) {
|
|
|
8186
8188
|
return null;
|
|
8187
8189
|
}
|
|
8188
8190
|
|
|
8191
|
+
//#endregion
|
|
8192
|
+
//#region src/tui/canvas/presets.ts
|
|
8193
|
+
/**
|
|
8194
|
+
* @module tui/canvas/presets
|
|
8195
|
+
*
|
|
8196
|
+
* Named canvas presets: the user (or the koi) shapes a screen they like —
|
|
8197
|
+
* scene spec + Living-Canvas intent — saves it by name, and it's theirs
|
|
8198
|
+
* forever: `/canvas save dev`, `/canvas dev`, `/canvas presets`. Stored in
|
|
8199
|
+
* the state dir like every other durable TUI preference, so the agent always
|
|
8200
|
+
* knows the user's saved surfaces and can restore or evolve them on ask.
|
|
8201
|
+
*/
|
|
8202
|
+
function presetsPath() {
|
|
8203
|
+
return path.join(resolveStateDir(), "canvas-presets.json");
|
|
8204
|
+
}
|
|
8205
|
+
function loadPresets() {
|
|
8206
|
+
try {
|
|
8207
|
+
return JSON.parse(fs.readFileSync(presetsPath(), "utf8"));
|
|
8208
|
+
} catch {
|
|
8209
|
+
return {};
|
|
8210
|
+
}
|
|
8211
|
+
}
|
|
8212
|
+
function savePreset(name, preset) {
|
|
8213
|
+
const all = loadPresets();
|
|
8214
|
+
all[normalizeName(name)] = preset;
|
|
8215
|
+
fs.mkdirSync(path.dirname(presetsPath()), { recursive: true });
|
|
8216
|
+
fs.writeFileSync(presetsPath(), JSON.stringify(all, null, 2));
|
|
8217
|
+
}
|
|
8218
|
+
function getPreset(name) {
|
|
8219
|
+
return loadPresets()[normalizeName(name)] ?? null;
|
|
8220
|
+
}
|
|
8221
|
+
function deletePreset(name) {
|
|
8222
|
+
const all = loadPresets();
|
|
8223
|
+
const key = normalizeName(name);
|
|
8224
|
+
if (!(key in all)) return false;
|
|
8225
|
+
delete all[key];
|
|
8226
|
+
fs.writeFileSync(presetsPath(), JSON.stringify(all, null, 2));
|
|
8227
|
+
return true;
|
|
8228
|
+
}
|
|
8229
|
+
function listPresets() {
|
|
8230
|
+
return Object.keys(loadPresets()).sort();
|
|
8231
|
+
}
|
|
8232
|
+
function normalizeName(name) {
|
|
8233
|
+
return name.trim().toLowerCase().replace(/\s+/g, "-").slice(0, 40);
|
|
8234
|
+
}
|
|
8235
|
+
|
|
8189
8236
|
//#endregion
|
|
8190
8237
|
//#region src/tui/canvas/screen-sync.ts
|
|
8191
8238
|
/**
|
|
@@ -9736,6 +9783,44 @@ async function runTui(opts) {
|
|
|
9736
9783
|
chatLog.addSystem(value === "on" ? "canvas default on — new sessions boot into the visual terminal" : "canvas default off — new sessions boot into the classic chat");
|
|
9737
9784
|
return true;
|
|
9738
9785
|
}
|
|
9786
|
+
if (arg.startsWith("save ")) {
|
|
9787
|
+
const pname = normalizeName(arg.slice(5));
|
|
9788
|
+
if (!pname) {
|
|
9789
|
+
chatLog.addSystem("usage: /canvas save <name>");
|
|
9790
|
+
return true;
|
|
9791
|
+
}
|
|
9792
|
+
if (!lastVisualSpec) {
|
|
9793
|
+
chatLog.addSystem("nothing on screen to save yet — talk to koi first");
|
|
9794
|
+
return true;
|
|
9795
|
+
}
|
|
9796
|
+
savePreset(pname, {
|
|
9797
|
+
spec: lastVisualSpec,
|
|
9798
|
+
intent: caDirector.getLastIntent(),
|
|
9799
|
+
savedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
9800
|
+
});
|
|
9801
|
+
chatLog.addSystem(`saved canvas preset "${pname}" — load with /canvas ${pname}`);
|
|
9802
|
+
return true;
|
|
9803
|
+
}
|
|
9804
|
+
if (arg === "presets" || arg === "list") {
|
|
9805
|
+
const names = listPresets();
|
|
9806
|
+
chatLog.addSystem(names.length > 0 ? `canvas presets: ${names.join(", ")} — load with /canvas <name>` : "no canvas presets yet — save one with /canvas save <name>");
|
|
9807
|
+
return true;
|
|
9808
|
+
}
|
|
9809
|
+
if (arg.startsWith("delete ")) {
|
|
9810
|
+
const pname = normalizeName(arg.slice(7));
|
|
9811
|
+
chatLog.addSystem(deletePreset(pname) ? `deleted preset "${pname}"` : `no preset named "${pname}"`);
|
|
9812
|
+
return true;
|
|
9813
|
+
}
|
|
9814
|
+
const preset = arg ? getPreset(arg) : null;
|
|
9815
|
+
if (preset) {
|
|
9816
|
+
const builtPreset = buildScene({ spec: preset.spec });
|
|
9817
|
+
if (builtPreset) {
|
|
9818
|
+
lastVisualSpec = preset.spec;
|
|
9819
|
+
canvasMode.enter(builtPreset.scene, `preset:${normalizeName(arg)}`);
|
|
9820
|
+
if (preset.intent) caDirector.apply(preset.intent);
|
|
9821
|
+
return true;
|
|
9822
|
+
}
|
|
9823
|
+
}
|
|
9739
9824
|
const built = buildScene({ name: arg || "pond" });
|
|
9740
9825
|
if (!built) return false;
|
|
9741
9826
|
canvasMode.enter(built.scene, built.label);
|
|
@@ -52,8 +52,8 @@ import "./systemd-fjt-WYE7.js";
|
|
|
52
52
|
import "./diagnostics-DPRvn_ky.js";
|
|
53
53
|
import "./daemon-runtime-CtqjzJUQ.js";
|
|
54
54
|
import "./ensure-local-gateway-nFYv6_lI.js";
|
|
55
|
-
import { t as runTui } from "./tui-
|
|
56
|
-
import "./graphics-protocol-
|
|
55
|
+
import { t as runTui } from "./tui-PxB-9vcf.js";
|
|
56
|
+
import "./graphics-protocol-K_Nx2CZD.js";
|
|
57
57
|
|
|
58
58
|
//#region src/cli/tui-cli.ts
|
|
59
59
|
function registerTuiCli(program) {
|
|
@@ -93,15 +93,15 @@ import "./service-CW9nUfWU.js";
|
|
|
93
93
|
import "./systemd-fjt-WYE7.js";
|
|
94
94
|
import "./diagnostics-DPRvn_ky.js";
|
|
95
95
|
import "./channels-status-issues-D92ZMiSY.js";
|
|
96
|
-
import { a as formatUpdateOneLiner, i as formatUpdateAvailableHint, r as ensureCompletionCacheExists, s as resolveUpdateAvailability, t as checkShellCompletionStatus } from "./doctor-completion-
|
|
97
|
-
import "./register.subclis-
|
|
96
|
+
import { a as formatUpdateOneLiner, i as formatUpdateAvailableHint, r as ensureCompletionCacheExists, s as resolveUpdateAvailability, t as checkShellCompletionStatus } from "./doctor-completion-CjjQQkQg.js";
|
|
97
|
+
import "./register.subclis-BOfFB3d9.js";
|
|
98
98
|
import { t as formatHelpExamples } from "./help-format-VHofKIT0.js";
|
|
99
99
|
import "./control-ui-assets-Dcc_8tht.js";
|
|
100
100
|
import "./daemon-runtime-CtqjzJUQ.js";
|
|
101
101
|
import "./systemd-linger-T7_vGBN4.js";
|
|
102
102
|
import "./auth-health-DydWZ4Iy.js";
|
|
103
|
-
import { t as doctorCommand } from "./doctor-
|
|
104
|
-
import { r as installCompletion } from "./completion-cli-
|
|
103
|
+
import { t as doctorCommand } from "./doctor-CQGJdbYI.js";
|
|
104
|
+
import { r as installCompletion } from "./completion-cli-EZT_a2ap.js";
|
|
105
105
|
import "./service-audit-ESoCtKKk.js";
|
|
106
106
|
import "./shared-C1BN86q0.js";
|
|
107
107
|
import { r as runDaemonRestart } from "./daemon-cli-B1J4fZj3.js";
|