skykoi 2026.3.414 → 2026.3.415
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/{archive-WruAwy6s.js → archive-v5c_oZ0M.js} +1 -1
- package/dist/build-info.json +3 -3
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{channel-options-DYCf9v2W.js → channel-options-BO7KFBkh.js} +1 -1
- package/dist/{channels-cli-DSQ4oy4Y.js → channels-cli-CqD6eUNX.js} +6 -6
- package/dist/cli/daemon-cli.js +1 -1
- package/dist/{cli-DmFlvRMC.js → cli-C0n-zgcl.js} +1 -1
- package/dist/{completion-cli-CsguJvoz.js → completion-cli-K8Ntq43i.js} +1 -1
- package/dist/{config-guard-DQXiSy5Q.js → config-guard-qNjpWyqh.js} +14 -14
- package/dist/{configure-BCl3QtlD.js → configure-DN6Q8CDB.js} +3 -3
- package/dist/{daemon-cli-CZLVApUM.js → daemon-cli-Cyae4A7P.js} +1 -1
- package/dist/{deps-Dbx8adU8.js → deps-CVjDioW-.js} +1 -1
- package/dist/{doctor-BpXFiPqv.js → doctor-CYGTkAl0.js} +3 -3
- package/dist/{doctor-completion-GrGJWV4x.js → doctor-completion-BmQxtaJp.js} +1 -1
- package/dist/entry.js +1 -1
- package/dist/extension-api.js +1 -1
- package/dist/{gateway-cli-xqXojLSo.js → gateway-cli-Bw46AFDg.js} +19 -258
- package/dist/{github-copilot-auth-JvC7cqnV.js → github-copilot-auth-W7sylWjb.js} +1 -1
- package/dist/{health-format-BShrF3OH.js → health-format-BbpMt6U1.js} +1 -1
- package/dist/{hooks-cli-DvvKG81A.js → hooks-cli-Y2YRhPHM.js} +3 -3
- package/dist/index.js +20 -20
- package/dist/{installs-Cium709v.js → installs-DYxVB0wb.js} +1 -1
- package/dist/{koi-DM3T-ump.js → koi-B-adVRJ0.js} +2 -2
- package/dist/{models-cli-C9BjYUxt.js → models-cli-BvE3ukyD.js} +2 -2
- package/dist/{onboard-channels-C0UmGKmd.js → onboard-channels-DXgzUduh.js} +2 -2
- package/dist/{onboard-skills-Bm5eluZS.js → onboard-skills-D2PuvOlq.js} +3 -3
- package/dist/{onboarding-C-zf9YHw.js → onboarding-KjPht-vT.js} +7 -7
- package/dist/{plugin-registry-DjQIc4fr.js → plugin-registry-Dd3gYaF4.js} +1 -1
- package/dist/plugin-sdk/index.js +5 -5
- package/dist/plugin-sdk/{pi-model-discovery-ClImJtLC.js → pi-model-discovery-lynj0LAO.js} +3 -3
- package/dist/{plugins-cli-DLqLCo_p.js → plugins-cli-CXwGKG5Z.js} +5 -5
- package/dist/{program-DShIAkWX.js → program-BvCROCKp.js} +5 -5
- package/dist/{register.subclis-BPdEXZni.js → register.subclis-D4icX3hP.js} +11 -11
- package/dist/{reply-CYq_q01E.js → reply-CDp9q1Vc.js} +1 -1
- package/dist/{run-main-Bn58wQdP.js → run-main-q7BkaqXe.js} +21 -21
- package/dist/{server-node-events-Csm9bZJ8.js → server-node-events-DuXlBGXC.js} +3 -3
- package/dist/{status-58QOIEvg.js → status-unalYyJY.js} +1 -1
- package/dist/{tui-cli-D2zV8tHs.js → tui-cli-DtHxmn2U.js} +2 -2
- package/dist/{tui-m4YD7QH0.js → tui-eV0dj-x4.js} +1 -1
- package/dist/{tui-shell-Dq1-ovj_.js → tui-shell-BNyj67Rq.js} +2 -2
- package/dist/{update-BOMXnZrk.js → update-CXkUTz34.js} +1 -1
- package/dist/{update-cli-DN__RKTe.js → update-cli-CT9T8iOX.js} +11 -11
- 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 +2 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { o as __toESM } from "./chunk-D_gEzPfs.js";
|
|
2
2
|
import { B as normalizeThinkLevel, F as formatXHighModelHint, H as normalizeVerboseLevel, P as formatThinkingLevels, R as normalizeElevatedLevel, V as normalizeUsageDisplay, W as supportsXHighThinking, z as normalizeReasoningLevel } from "./pi-embedded-helpers-BnsMD0to.js";
|
|
3
|
-
import { $ as recordRemoteNodeInfo, $t as isTtsEnabled, A as scheduleGatewaySigusr1Restart, An as DEFAULT_INPUT_FILE_MAX_CHARS, At as formatZonedTimestamp, B as requestHeartbeatNow, Bn as extractImageContentFromSource, Cn as applyVerboseOverride, D as authorizeGatewaySigusr1Restart, En as isSystemEventContextChanged, F as normalizeOptionalKoiId, Fn as DEFAULT_INPUT_PDF_MAX_PAGES, Ft as initSubkoiRegistry, Gt as resolveUserTimezone, H as getPluginToolMeta, Ht as resolveKoiIdentity, I as normalizeOptionalText, In as DEFAULT_INPUT_PDF_MAX_PIXELS, J as handleSlackHttpRequest, Jt as registerInternalHook, Kt as clearInternalHooks, L as normalizePayloadToSystemText, Ln as DEFAULT_INPUT_PDF_MIN_TEXT_CHARS, M as normalizeCronJobCreate, Mn as DEFAULT_INPUT_IMAGE_MAX_BYTES, Mt as stopSubkoisForRequester, N as normalizeCronJobPatch, Nn as DEFAULT_INPUT_IMAGE_MIMES, Nt as findSubkoiRunByChildSessionKey, O as consumeGatewaySigusr1RestartAuthorization, On as loadModelCatalog, Ot as dispatchInboundMessage, P as inferLegacyName, Pn as DEFAULT_INPUT_MAX_REDIRECTS, Pt as findSubkoiRunByRunId, Q as primeRemoteSkillsCache, Qt as getTtsProvider, R as normalizeRequiredName, Rn as DEFAULT_INPUT_TIMEOUT_MS, S as resetDirectoryCache, Sn as applyModelOverrideToSessionEntry, T as runWithModelFallback, Tn as enqueueSystemEvent, Tt as getChannelActivity, U as loadSKYKOIPlugins, Un as resolveKoiTimeoutMs, Ut as formatUserTime, Vn as normalizeMimeList, W as loadProviderUsageSummary, Wt as resolveUserTimeFormat, Xt as OPENAI_TTS_MODELS, Yt as triggerInternalHook, Z as getRemoteSkillEligibility, Zt as OPENAI_TTS_VOICES, _ as resolveAnnounceTargetFromKey, _t as buildHistoryContextFromEntries, a as normalizeSendPolicy, an as resolveTtsProviderOrder, at as buildSafeExternalPrompt, b as resolveOutboundSessionRoute, bn as stripHeartbeatToken, bt as getLastHeartbeatEvent, c as runEmbeddedPiKoi, cn as textToSpeech, ct as isExternalHookSession, dn as setCommandLaneConcurrency, en as isTtsProviderConfigured, et as refreshRemoteBinsForConnectedNodes, f as waitForEmbeddedPiRunEnd, fn as CommandLane, ft as createReplyPrefixOptions, g as createSKYKOITools, gn as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, h as initRuntimeContext, hn as isDiagnosticsEnabled, ht as registerUnhandledRejectionHandler, i as runCliKoi, in as resolveTtsPrefsPath, it as registerSkillsChangeListener, j as setGatewaySigusr1RestartPolicy, jn as DEFAULT_INPUT_FILE_MIMES, jt as isAbortTrigger, k as isGatewaySigusr1RestartExternallyAllowed, kn as DEFAULT_INPUT_FILE_MAX_BYTES, kt as createReplyDispatcher, l as getLastSystemPrompt, mn as stopDiagnosticHeartbeat, n as getCliSessionId, nn as resolveTtsAutoMode, nt as setSkillsRemoteRegistry, o as resolveSendPolicy, on as setTtsEnabled, ot as detectSuspiciousPatterns, pn as startDiagnosticHeartbeat, pt as normalizeGroupActivation, qt as createInternalHookEvent, r as setCliSessionId, rn as resolveTtsConfig, rt as getSkillsSnapshotVersion, s as clearSessionQueues, sn as setTtsProvider, st as getHookType, tn as resolveTtsApiKey, tt as refreshRemoteNodeBins, u as abortEmbeddedPiRun, vt as resolveHeartbeatVisibility, w as readRecentActivity, wn as parseVerboseOverride, xt as onHeartbeatEvent, y as ensureOutboundSessionEntry, z as migrateLegacyCronPayload, zn as extractFileContentFromSource } from "./reply-
|
|
3
|
+
import { $ as recordRemoteNodeInfo, $t as isTtsEnabled, A as scheduleGatewaySigusr1Restart, An as DEFAULT_INPUT_FILE_MAX_CHARS, At as formatZonedTimestamp, B as requestHeartbeatNow, Bn as extractImageContentFromSource, Cn as applyVerboseOverride, D as authorizeGatewaySigusr1Restart, En as isSystemEventContextChanged, F as normalizeOptionalKoiId, Fn as DEFAULT_INPUT_PDF_MAX_PAGES, Ft as initSubkoiRegistry, Gt as resolveUserTimezone, H as getPluginToolMeta, Ht as resolveKoiIdentity, I as normalizeOptionalText, In as DEFAULT_INPUT_PDF_MAX_PIXELS, J as handleSlackHttpRequest, Jt as registerInternalHook, Kt as clearInternalHooks, L as normalizePayloadToSystemText, Ln as DEFAULT_INPUT_PDF_MIN_TEXT_CHARS, M as normalizeCronJobCreate, Mn as DEFAULT_INPUT_IMAGE_MAX_BYTES, Mt as stopSubkoisForRequester, N as normalizeCronJobPatch, Nn as DEFAULT_INPUT_IMAGE_MIMES, Nt as findSubkoiRunByChildSessionKey, O as consumeGatewaySigusr1RestartAuthorization, On as loadModelCatalog, Ot as dispatchInboundMessage, P as inferLegacyName, Pn as DEFAULT_INPUT_MAX_REDIRECTS, Pt as findSubkoiRunByRunId, Q as primeRemoteSkillsCache, Qt as getTtsProvider, R as normalizeRequiredName, Rn as DEFAULT_INPUT_TIMEOUT_MS, S as resetDirectoryCache, Sn as applyModelOverrideToSessionEntry, T as runWithModelFallback, Tn as enqueueSystemEvent, Tt as getChannelActivity, U as loadSKYKOIPlugins, Un as resolveKoiTimeoutMs, Ut as formatUserTime, Vn as normalizeMimeList, W as loadProviderUsageSummary, Wt as resolveUserTimeFormat, Xt as OPENAI_TTS_MODELS, Yt as triggerInternalHook, Z as getRemoteSkillEligibility, Zt as OPENAI_TTS_VOICES, _ as resolveAnnounceTargetFromKey, _t as buildHistoryContextFromEntries, a as normalizeSendPolicy, an as resolveTtsProviderOrder, at as buildSafeExternalPrompt, b as resolveOutboundSessionRoute, bn as stripHeartbeatToken, bt as getLastHeartbeatEvent, c as runEmbeddedPiKoi, cn as textToSpeech, ct as isExternalHookSession, dn as setCommandLaneConcurrency, en as isTtsProviderConfigured, et as refreshRemoteBinsForConnectedNodes, f as waitForEmbeddedPiRunEnd, fn as CommandLane, ft as createReplyPrefixOptions, g as createSKYKOITools, gn as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, h as initRuntimeContext, hn as isDiagnosticsEnabled, ht as registerUnhandledRejectionHandler, i as runCliKoi, in as resolveTtsPrefsPath, it as registerSkillsChangeListener, j as setGatewaySigusr1RestartPolicy, jn as DEFAULT_INPUT_FILE_MIMES, jt as isAbortTrigger, k as isGatewaySigusr1RestartExternallyAllowed, kn as DEFAULT_INPUT_FILE_MAX_BYTES, kt as createReplyDispatcher, l as getLastSystemPrompt, mn as stopDiagnosticHeartbeat, n as getCliSessionId, nn as resolveTtsAutoMode, nt as setSkillsRemoteRegistry, o as resolveSendPolicy, on as setTtsEnabled, ot as detectSuspiciousPatterns, pn as startDiagnosticHeartbeat, pt as normalizeGroupActivation, qt as createInternalHookEvent, r as setCliSessionId, rn as resolveTtsConfig, rt as getSkillsSnapshotVersion, s as clearSessionQueues, sn as setTtsProvider, st as getHookType, tn as resolveTtsApiKey, tt as refreshRemoteNodeBins, u as abortEmbeddedPiRun, vt as resolveHeartbeatVisibility, w as readRecentActivity, wn as parseVerboseOverride, xt as onHeartbeatEvent, y as ensureOutboundSessionEntry, z as migrateLegacyCronPayload, zn as extractFileContentFromSource } from "./reply-CDp9q1Vc.js";
|
|
4
4
|
import { S as getActivePluginRegistry, a as setConsoleTimestampPrefix, f as CHANNEL_IDS, i as setConsoleSubsystemFilter, m as DEFAULT_CHAT_CHANNEL, n as runtimeForLogger, s as defaultRuntime, t as createSubsystemLogger } from "./subsystem-gU4M25gl.js";
|
|
5
5
|
import { g as resolveStateDir, i as isNixMode, l as resolveGatewayLockDir, o as resolveConfigPath, r as STATE_DIR, t as CONFIG_PATH, u as resolveGatewayPort } from "./paths-VdmjGGyc.js";
|
|
6
6
|
import { d as getChildLogger, f as getLogger, p as getResolvedLoggerSettings, s as setVerbose } from "./globals-4hwkGgXA.js";
|
|
@@ -100,7 +100,7 @@ import "./native-window-DumLjKeL.js";
|
|
|
100
100
|
import { t as liveBroadcast } from "./live-broadcast-BIlUXK-0.js";
|
|
101
101
|
import "./action-ledger-CZm1RLNd.js";
|
|
102
102
|
import { i as readEventsSince, n as clearEventLogForSession, o as subscribeAll, r as hydrateSession, t as appendEvent } from "./event-log-8Gy24Q8h.js";
|
|
103
|
-
import { n as createOutboundSendDeps, t as createDefaultDeps } from "./deps-
|
|
103
|
+
import { n as createOutboundSendDeps, t as createDefaultDeps } from "./deps-CVjDioW-.js";
|
|
104
104
|
import { i as enableTailscaleServe, n as disableTailscaleServe, o as getTailnetHostname, r as enableTailscaleFunnel, t as disableTailscaleFunnel } from "./tailscale-BX7pFm3E.js";
|
|
105
105
|
import { t as ensureSKYKOICliOnPath } from "./path-env-1_C-JRUU.js";
|
|
106
106
|
import { t as forceFreePortAndWait } from "./ports-C6-lHXUM.js";
|
|
@@ -108,15 +108,15 @@ import { n as resolveChannelDefaultAccountId } from "./helpers-Bf_7MMN1.js";
|
|
|
108
108
|
import "./logging-B2js4Jgc.js";
|
|
109
109
|
import "./note-Dgsh9TJE.js";
|
|
110
110
|
import { t as WizardCancelledError } from "./prompts-CNzp9M83.js";
|
|
111
|
-
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-
|
|
112
|
-
import { n as installSkill } from "./onboard-skills-
|
|
113
|
-
import "./github-copilot-auth-
|
|
114
|
-
import "./onboard-channels-
|
|
111
|
+
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-KjPht-vT.js";
|
|
112
|
+
import { n as installSkill } from "./onboard-skills-D2PuvOlq.js";
|
|
113
|
+
import "./github-copilot-auth-W7sylWjb.js";
|
|
114
|
+
import "./onboard-channels-DXgzUduh.js";
|
|
115
115
|
import { r as buildChannelUiCatalog, t as applyPluginAutoEnable } from "./plugin-auto-enable-D5QYYZDH.js";
|
|
116
|
-
import "./archive-
|
|
116
|
+
import "./archive-v5c_oZ0M.js";
|
|
117
117
|
import "./skill-scanner-b9MamBYt.js";
|
|
118
|
-
import "./installs-
|
|
119
|
-
import { c as startHeartbeatRunner, n as formatHealthChannelLines, o as runHeartbeatOnce, r as getHealthSnapshot, s as setHeartbeatsEnabled } from "./health-format-
|
|
118
|
+
import "./installs-DYxVB0wb.js";
|
|
119
|
+
import { c as startHeartbeatRunner, n as formatHealthChannelLines, o as runHeartbeatOnce, r as getHealthSnapshot, s as setHeartbeatsEnabled } from "./health-format-BbpMt6U1.js";
|
|
120
120
|
import { c as compareSemverStrings, d as resolveNpmChannelTag, g as normalizeUpdateChannel, l as fetchNpmLatestVersion, p as DEFAULT_PACKAGE_CHANNEL, s as checkUpdateStatus, t as runGatewayUpdate } from "./update-runner-DbYE4uWc.js";
|
|
121
121
|
import { i as resolveGatewayAuth, n as authorizeGatewayConnect, r as isLocalDirectRequest, t as assertGatewayAuthConfigured } from "./auth-Bv7GrJIF.js";
|
|
122
122
|
import { i as probeGateway } from "./audit-CdSf5yc6.js";
|
|
@@ -127,22 +127,22 @@ import { p as resolveGatewayStateDir } from "./systemd-5f0_yK5K.js";
|
|
|
127
127
|
import "./diagnostics-Db0yQkCa.js";
|
|
128
128
|
import "./node-service-FpI5_Kev.js";
|
|
129
129
|
import "./channels-status-issues-BUOqiSuy.js";
|
|
130
|
-
import "./doctor-completion-
|
|
131
|
-
import "./register.subclis-
|
|
132
|
-
import { a as createOutboundSendDeps$1, i as resolveKoiOutboundTarget, r as resolveKoiDeliveryPlan, t as koiCommand } from "./koi-
|
|
130
|
+
import "./doctor-completion-BmQxtaJp.js";
|
|
131
|
+
import "./register.subclis-D4icX3hP.js";
|
|
132
|
+
import { a as createOutboundSendDeps$1, i as resolveKoiOutboundTarget, r as resolveKoiDeliveryPlan, t as koiCommand } from "./koi-B-adVRJ0.js";
|
|
133
133
|
import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-D2wZfVim.js";
|
|
134
134
|
import "./daemon-runtime-Cw8HN1z_.js";
|
|
135
135
|
import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } from "./widearea-dns-zHPAPSiI.js";
|
|
136
136
|
import { n as discoverGatewayBeacons } from "./bonjour-discovery-C601-zWo.js";
|
|
137
137
|
import "./ensure-local-gateway-DL9v_WFE.js";
|
|
138
|
-
import "./completion-cli-
|
|
138
|
+
import "./completion-cli-K8Ntq43i.js";
|
|
139
139
|
import "./service-audit-CijWRKqR.js";
|
|
140
140
|
import { i as shouldIncludeHook, n as loadWorkspaceHookEntries, r as resolveHookConfig } from "./hooks-status-NwL9AkZD.js";
|
|
141
|
-
import "./tui-
|
|
141
|
+
import "./tui-eV0dj-x4.js";
|
|
142
142
|
import "./canvas-state-Oz4Obrxj.js";
|
|
143
143
|
import { t as buildChannelAccountSnapshot } from "./status-D2sLFE9B.js";
|
|
144
144
|
import "./shared-CZVRangM.js";
|
|
145
|
-
import { a as runDaemonStop, i as runDaemonStart, n as runDaemonStatus, o as runDaemonUninstall, r as runDaemonRestart, s as runDaemonInstall } from "./daemon-cli-
|
|
145
|
+
import { a as runDaemonStop, i as runDaemonStart, n as runDaemonStatus, o as runDaemonUninstall, r as runDaemonRestart, s as runDaemonInstall } from "./daemon-cli-Cyae4A7P.js";
|
|
146
146
|
import { a as toOptionString, i as parsePort$1, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-B3rppGQN.js";
|
|
147
147
|
import { i as setGatewayWsLogStyle, n as logWs, r as summarizeKoiEventForWsLog, t as formatForLog } from "./ws-log-K0TDamKG.js";
|
|
148
148
|
import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-By51E-G_.js";
|
|
@@ -12170,7 +12170,7 @@ const nodeHandlers = {
|
|
|
12170
12170
|
const p = params;
|
|
12171
12171
|
const payloadJSON = typeof p.payloadJSON === "string" ? p.payloadJSON : p.payload !== void 0 ? JSON.stringify(p.payload) : null;
|
|
12172
12172
|
await respondUnavailableOnThrow(respond, async () => {
|
|
12173
|
-
const { handleNodeEvent } = await import("./server-node-events-
|
|
12173
|
+
const { handleNodeEvent } = await import("./server-node-events-DuXlBGXC.js");
|
|
12174
12174
|
const nodeId = client?.connect?.device?.id ?? client?.connect?.client?.id ?? "node";
|
|
12175
12175
|
await handleNodeEvent({
|
|
12176
12176
|
deps: context.deps,
|
|
@@ -19241,245 +19241,6 @@ async function startEmailAuth() {
|
|
|
19241
19241
|
authUrl
|
|
19242
19242
|
};
|
|
19243
19243
|
}
|
|
19244
|
-
const ICONS = {
|
|
19245
|
-
whatsapp: `<svg viewBox="0 0 24 24" fill="#25D366" aria-hidden="true"><path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413Z"/></svg>`,
|
|
19246
|
-
email: `<svg viewBox="0 0 24 24" aria-hidden="true"><path fill="#4285f4" d="M24 5.457v13.909c0 .904-.732 1.636-1.636 1.636h-3.819V11.73L12 16.64l-6.545-4.91v9.273H1.636A1.636 1.636 0 010 19.366V5.457c0-2.023 2.309-3.178 3.927-1.964L5.455 4.64 12 9.548l6.545-4.91 1.528-1.145C21.69 2.28 24 3.434 24 5.457z"/><path fill="#fbbc04" d="M19.636 21.003V11.73L24 8.457v10.909c0 .904-.732 1.636-1.636 1.636h-2.728z"/><path fill="#34a853" d="M0 5.457v13.909c0 .904.732 1.636 1.636 1.636h3.819V11.73L0 8.457v-3z"/><path fill="#ea4335" d="M5.455 11.73L0 8.457v-3c0-2.023 2.309-3.178 3.927-1.964l1.528 1.145V11.73z"/><path fill="#c5221f" d="M19.636 11.73l4.364-3.273v-3c0-2.023-2.31-3.178-3.927-1.964l-.437.328v7.909z"/></svg>`,
|
|
19247
|
-
imessage: `<svg viewBox="0 0 24 24" aria-hidden="true"><defs><linearGradient id="imsg-g" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#5BF675"/><stop offset="1" stop-color="#0CBD2A"/></linearGradient></defs><path fill="url(#imsg-g)" d="M5.285 0A5.273 5.273 0 0 0 0 5.285v13.43A5.273 5.273 0 0 0 5.285 24h13.43A5.273 5.273 0 0 0 24 18.715V5.285A5.273 5.273 0 0 0 18.715 0ZM12 4.154a8.809 7.337 0 0 1 8.809 7.338A8.809 7.337 0 0 1 12 18.828a8.809 7.337 0 0 1-2.492-.303A8.656 7.337 0 0 1 5.93 19.93a9.929 7.337 0 0 0 1.54-2.155 8.809 7.337 0 0 1-4.279-6.283A8.809 7.337 0 0 1 12 4.154"/></svg>`,
|
|
19248
|
-
telegram: `<svg viewBox="0 0 24 24" fill="#26A5E4" aria-hidden="true"><path d="M11.944 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0a12 12 0 0 0-.056 0zm4.962 7.224c.1-.002.321.023.465.14a.506.506 0 0 1 .171.325c.016.093.036.306.02.472-.18 1.898-.962 6.502-1.36 8.627-.168.9-.499 1.201-.82 1.23-.696.065-1.225-.46-1.9-.902-1.056-.693-1.653-1.124-2.678-1.8-1.185-.78-.417-1.21.258-1.91.177-.184 3.247-2.977 3.307-3.23.007-.032.014-.15-.056-.212s-.174-.041-.249-.024c-.106.024-1.793 1.14-5.061 3.345-.48.33-.913.49-1.302.48-.428-.008-1.252-.241-1.865-.44-.752-.245-1.349-.374-1.297-.789.027-.216.325-.437.893-.663 3.498-1.524 5.83-2.529 6.998-3.014 3.332-1.386 4.025-1.627 4.476-1.635z"/></svg>`,
|
|
19249
|
-
discord: `<svg viewBox="0 0 24 24" fill="#5865F2" aria-hidden="true"><path d="M20.317 4.37a19.79 19.79 0 00-4.885-1.515.074.074 0 00-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 00-5.487 0 12.64 12.64 0 00-.617-1.25.077.077 0 00-.079-.037A19.74 19.74 0 003.677 4.37a.07.07 0 00-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 00.031.057 19.9 19.9 0 005.993 3.03.078.078 0 00.084-.028 14.09 14.09 0 001.226-1.994.076.076 0 00-.041-.106 13.11 13.11 0 01-1.872-.892.077.077 0 01-.008-.128 10.2 10.2 0 00.372-.292.074.074 0 01.077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 01.078.01c.12.098.246.198.373.292a.077.077 0 01-.006.127 12.3 12.3 0 01-1.873.892.077.077 0 00-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 00.084.028 19.84 19.84 0 006.002-3.03.077.077 0 00.032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 00-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418z"/></svg>`,
|
|
19250
|
-
slack: `<svg viewBox="0 0 24 24" aria-hidden="true"><path fill="#E01E5A" d="M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zM6.313 15.165a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313z"/><path fill="#36C5F0" d="M8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zM8.834 6.313a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312z"/><path fill="#2EB67D" d="M18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zM17.688 8.834a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312z"/><path fill="#ECB22E" d="M15.165 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zM15.165 17.688a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z"/></svg>`,
|
|
19251
|
-
signal: `<svg viewBox="0 0 24 24" fill="#3B45FD" aria-hidden="true"><path d="M12 0q-.934 0-1.83.139l.17 1.111a11 11 0 0 1 3.32 0l.172-1.111A12 12 0 0 0 12 0M9.152.34A12 12 0 0 0 5.77 1.742l.584.961a10.8 10.8 0 0 1 3.066-1.27zm5.696 0-.268 1.094a10.8 10.8 0 0 1 3.066 1.27l.584-.962A12 12 0 0 0 14.848.34M12 2.25a9.75 9.75 0 0 0-8.539 14.459c.074.134.1.292.064.441l-1.013 4.338 4.338-1.013a.62.62 0 0 1 .441.064A9.7 9.7 0 0 0 12 21.75c5.385 0 9.75-4.365 9.75-9.75S17.385 2.25 12 2.25m-7.092.068a12 12 0 0 0-2.59 2.59l.909.664a11 11 0 0 1 2.345-2.345zm14.184 0-.664.909a11 11 0 0 1 2.345 2.345l.909-.664a12 12 0 0 0-2.59-2.59M1.742 5.77A12 12 0 0 0 .34 9.152l1.094.268a10.8 10.8 0 0 1 1.269-3.066zm20.516 0-.961.584a10.8 10.8 0 0 1 1.27 3.066l1.093-.268a12 12 0 0 0-1.402-3.383M.138 10.168A12 12 0 0 0 0 12q0 .934.139 1.83l1.111-.17A11 11 0 0 1 1.125 12q0-.848.125-1.66zm23.723.002-1.111.17q.125.812.125 1.66c0 .848-.042 1.12-.125 1.66l1.111.172a12.1 12.1 0 0 0 0-3.662M1.434 14.58l-1.094.268a12 12 0 0 0 .96 2.591l-.265 1.14 1.096.255.36-1.539-.188-.365a10.8 10.8 0 0 1-.87-2.35m21.133 0a10.8 10.8 0 0 1-1.27 3.067l.962.584a12 12 0 0 0 1.402-3.383zm-1.793 3.848a11 11 0 0 1-2.345 2.345l.664.909a12 12 0 0 0 2.59-2.59zm-19.959 1.1L.357 21.48a1.8 1.8 0 0 0 2.162 2.161l1.954-.455-.256-1.095-1.953.455a.675.675 0 0 1-.81-.81l.454-1.954zm16.832 1.769a10.8 10.8 0 0 1-3.066 1.27l.268 1.093a12 12 0 0 0 3.382-1.402zm-10.94.213-1.54.36.256 1.095 1.139-.266c.814.415 1.683.74 2.591.961l.268-1.094a10.8 10.8 0 0 1-2.35-.869zm3.634 1.24-.172 1.111a12.1 12.1 0 0 0 3.662 0l-.17-1.111q-.812.125-1.66.125a11 11 0 0 1-1.66-.125"/></svg>`,
|
|
19252
|
-
google: `<svg viewBox="0 0 48 48" aria-hidden="true"><path fill="#FFC107" d="M43.611 20.083H42V20H24v8h11.303c-1.649 4.657-6.08 8-11.303 8-6.627 0-12-5.373-12-12s5.373-12 12-12c3.059 0 5.842 1.154 7.961 3.039l5.657-5.657C34.046 6.053 29.268 4 24 4 12.955 4 4 12.955 4 24s8.955 20 20 20 20-8.955 20-20c0-1.341-.138-2.65-.389-3.917z"/><path fill="#FF3D00" d="M6.306 14.691l6.571 4.819C14.655 15.108 18.961 12 24 12c3.059 0 5.842 1.154 7.961 3.039l5.657-5.657C34.046 6.053 29.268 4 24 4 16.318 4 9.656 8.337 6.306 14.691z"/><path fill="#4CAF50" d="M24 44c5.166 0 9.86-1.977 13.409-5.192l-6.19-5.238C29.211 35.091 26.715 36 24 36c-5.202 0-9.619-3.317-11.283-7.946l-6.522 5.025C9.505 39.556 16.227 44 24 44z"/><path fill="#1976D2" d="M43.611 20.083H42V20H24v8h11.303c-.792 2.237-2.231 4.166-4.087 5.571l6.19 5.238C36.971 39.205 44 34 44 24c0-1.341-.138-2.65-.389-3.917z"/></svg>`,
|
|
19253
|
-
generic: `<svg viewBox="0 0 24 24" fill="none" stroke="#71717a" stroke-width="1.5" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M13.19 8.688a4.5 4.5 0 011.242 7.244l-4.5 4.5a4.5 4.5 0 01-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 00-6.364-6.364l-4.5 4.5a4.5 4.5 0 001.242 7.244"/></svg>`
|
|
19254
|
-
};
|
|
19255
|
-
function page() {
|
|
19256
|
-
return `<!doctype html><html lang="en"><head><meta charset="utf-8"><title>Connections — SkyKoi</title>
|
|
19257
|
-
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
19258
|
-
<style>
|
|
19259
|
-
:root{color-scheme:dark}
|
|
19260
|
-
*{box-sizing:border-box}
|
|
19261
|
-
body{margin:0;background:#09090b;color:#fafafa;font:14px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;-webkit-font-smoothing:antialiased}
|
|
19262
|
-
.bgfx{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:0}
|
|
19263
|
-
.bgfx i{position:absolute;border-radius:50%;display:block}
|
|
19264
|
-
.bgfx .a{top:-5%;left:15%;width:400px;height:400px;background:rgba(124,58,237,.05);filter:blur(100px)}
|
|
19265
|
-
.bgfx .b{bottom:10%;right:10%;width:350px;height:350px;background:rgba(8,145,178,.04);filter:blur(90px)}
|
|
19266
|
-
.wrap{position:relative;z-index:1;max-width:640px;margin:0 auto;padding:44px 20px 90px}
|
|
19267
|
-
h1{font-size:20px;font-weight:600;letter-spacing:-.01em;margin:0}
|
|
19268
|
-
.sub{font-size:12px;color:#71717a;margin:4px 0 0}
|
|
19269
|
-
.section{display:flex;align-items:center;justify-content:space-between;margin:30px 0 10px}
|
|
19270
|
-
.section h2{font-size:11px;font-weight:500;color:#71717a;text-transform:uppercase;letter-spacing:.12em;margin:0}
|
|
19271
|
-
.refresh{background:none;border:0;color:#52525b;cursor:pointer;font-size:12px;padding:4px 8px;border-radius:8px}
|
|
19272
|
-
.refresh:hover{color:#a1a1aa;background:rgba(255,255,255,.04)}
|
|
19273
|
-
.card{background:rgba(255,255,255,.02);border:1px solid rgba(255,255,255,.05);border-radius:12px;padding:14px 16px;margin-bottom:8px;transition:border-color .2s}
|
|
19274
|
-
.card:hover{border-color:rgba(255,255,255,.10)}
|
|
19275
|
-
.row{display:flex;align-items:center;gap:12px}
|
|
19276
|
-
.chip{flex:none;width:40px;height:40px;border-radius:10px;background:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 1px 2px rgba(0,0,0,.4)}
|
|
19277
|
-
.chip svg{width:20px;height:20px}
|
|
19278
|
-
.info{flex:1;min-width:0}
|
|
19279
|
-
.name{font-size:14px;font-weight:500;color:#fff}
|
|
19280
|
-
.detail{font-size:12px;color:#71717a;margin-top:1px}
|
|
19281
|
-
.detail a{color:#8b5cf6;text-decoration:none}
|
|
19282
|
-
.detail a:hover{color:#a78bfa}
|
|
19283
|
-
.badge{flex:none;padding:2px 8px;border-radius:6px;font-size:10px;font-weight:500;white-space:nowrap}
|
|
19284
|
-
.badge.ok{background:rgba(16,185,129,.10);color:#34d399}
|
|
19285
|
-
.badge.warn{background:rgba(245,158,11,.10);color:#fbbf24}
|
|
19286
|
-
.badge.off{background:rgba(113,113,122,.10);color:#a1a1aa}
|
|
19287
|
-
.badge.oauth{background:rgba(59,130,246,.10);color:#60a5fa}
|
|
19288
|
-
.btn{flex:none;background:#7c3aed;color:#fff;border:0;border-radius:10px;padding:8px 14px;font-size:13px;font-weight:500;cursor:pointer;transition:background .15s}
|
|
19289
|
-
.btn:hover{background:#8b5cf6}
|
|
19290
|
-
.btn:disabled{opacity:.5;cursor:default}
|
|
19291
|
-
.btn.ghost{background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.08);color:#d4d4d8}
|
|
19292
|
-
.btn.ghost:hover{background:rgba(255,255,255,.06)}
|
|
19293
|
-
.btn.google{background:#fff;color:#1f2937;display:inline-flex;align-items:center;gap:8px}
|
|
19294
|
-
.btn.google:hover{background:#f4f4f5}
|
|
19295
|
-
.btn.google svg{width:16px;height:16px}
|
|
19296
|
-
.hint{font-size:11px;color:#71717a;margin-top:8px}
|
|
19297
|
-
.hero{padding:18px}
|
|
19298
|
-
.qrbox{margin-top:14px;display:flex;gap:20px;align-items:center;flex-wrap:wrap}
|
|
19299
|
-
.qr{width:196px;height:196px;border-radius:12px;background:#fff;padding:8px}
|
|
19300
|
-
.steps{margin:0;padding-left:18px;font-size:12.5px;color:#a1a1aa}
|
|
19301
|
-
.steps li{margin:5px 0}
|
|
19302
|
-
.steps b{color:#e4e4e7}
|
|
19303
|
-
.linkedline{display:flex;align-items:center;gap:8px;margin-top:12px;color:#34d399;font-size:13px;font-weight:500}
|
|
19304
|
-
.foot{margin-top:34px;font-size:11px;color:#3f3f46;text-align:center}
|
|
19305
|
-
</style></head><body>
|
|
19306
|
-
<div class="bgfx"><i class="a"></i><i class="b"></i></div>
|
|
19307
|
-
<div class="wrap">
|
|
19308
|
-
<h1>Connections</h1>
|
|
19309
|
-
<p class="sub">Link the accounts your koi works with. Everything here runs on this Mac.</p>
|
|
19310
|
-
|
|
19311
|
-
<div class="section"><h2>Accounts</h2>
|
|
19312
|
-
<button class="refresh" onclick="refresh()" title="Refresh status">↻ refresh</button></div>
|
|
19313
|
-
|
|
19314
|
-
<!-- WhatsApp — QR scans right here -->
|
|
19315
|
-
<div class="card hero" id="wa-card">
|
|
19316
|
-
<div class="row">
|
|
19317
|
-
<div class="chip">${ICONS.whatsapp}</div>
|
|
19318
|
-
<div class="info"><div class="name">WhatsApp</div>
|
|
19319
|
-
<div class="detail">Scan once — your koi can read and send from your number</div></div>
|
|
19320
|
-
<span class="badge off" id="wa-badge">checking…</span>
|
|
19321
|
-
</div>
|
|
19322
|
-
<div class="qrbox" id="wa-qrbox" style="display:none">
|
|
19323
|
-
<img class="qr" id="wa-qr" alt="WhatsApp link QR">
|
|
19324
|
-
<ol class="steps">
|
|
19325
|
-
<li>Open WhatsApp on your phone</li>
|
|
19326
|
-
<li>Settings → <b>Linked devices</b> → <b>Link a device</b></li>
|
|
19327
|
-
<li>Point the camera at this code</li>
|
|
19328
|
-
</ol>
|
|
19329
|
-
</div>
|
|
19330
|
-
<div class="hint" id="wa-hint"></div>
|
|
19331
|
-
</div>
|
|
19332
|
-
|
|
19333
|
-
<!-- Email & Calendar — real hosted OAuth -->
|
|
19334
|
-
<div class="card hero" id="em-card">
|
|
19335
|
-
<div class="row">
|
|
19336
|
-
<div class="chip">${ICONS.email}</div>
|
|
19337
|
-
<div class="info"><div class="name">Email & Calendar</div>
|
|
19338
|
-
<div class="detail" id="em-detail">Gmail / Google Workspace — mail, calendar, contacts</div></div>
|
|
19339
|
-
<span class="badge off" id="em-badge">checking…</span>
|
|
19340
|
-
</div>
|
|
19341
|
-
<div id="em-action" style="margin-top:12px"></div>
|
|
19342
|
-
<div class="hint" id="em-hint"></div>
|
|
19343
|
-
</div>
|
|
19344
|
-
|
|
19345
|
-
<div class="section"><h2>Messaging channels</h2></div>
|
|
19346
|
-
<div id="channels"></div>
|
|
19347
|
-
|
|
19348
|
-
<p class="foot">Served locally by your koi's gateway · 127.0.0.1 only · nothing here leaves this Mac</p>
|
|
19349
|
-
</div>
|
|
19350
|
-
<script>
|
|
19351
|
-
const ICONS = ${JSON.stringify(ICONS)};
|
|
19352
|
-
const esc = (s) => String(s ?? "").replace(/[&<>"]/g, (c) => ({"&":"&","<":"<",">":">",'"':"""}[c]));
|
|
19353
|
-
|
|
19354
|
-
let status = null;
|
|
19355
|
-
async function fetchStatus(){
|
|
19356
|
-
const r = await fetch('/connect/api/status');
|
|
19357
|
-
status = await r.json();
|
|
19358
|
-
paint();
|
|
19359
|
-
}
|
|
19360
|
-
function badge(el, cls, text){ el.className = 'badge ' + cls; el.textContent = text; }
|
|
19361
|
-
|
|
19362
|
-
function paint(){
|
|
19363
|
-
if(!status) return;
|
|
19364
|
-
// WhatsApp
|
|
19365
|
-
const waB = document.getElementById('wa-badge');
|
|
19366
|
-
if(status.whatsapp.linked){
|
|
19367
|
-
badge(waB,'ok','Linked');
|
|
19368
|
-
document.getElementById('wa-qrbox').style.display='none';
|
|
19369
|
-
document.getElementById('wa-hint').textContent='';
|
|
19370
|
-
waLinkedShown = true;
|
|
19371
|
-
} else if(!waStarted){
|
|
19372
|
-
badge(waB,'off','Not linked');
|
|
19373
|
-
startWhatsApp();
|
|
19374
|
-
}
|
|
19375
|
-
// Email
|
|
19376
|
-
const emB = document.getElementById('em-badge');
|
|
19377
|
-
const emAct = document.getElementById('em-action');
|
|
19378
|
-
const emHint = document.getElementById('em-hint');
|
|
19379
|
-
const emDetail = document.getElementById('em-detail');
|
|
19380
|
-
if(status.email.linked){
|
|
19381
|
-
badge(emB,'ok','Linked');
|
|
19382
|
-
emDetail.textContent = status.email.email ? status.email.email + ' — mail, calendar, contacts' : 'Mailbox linked — mail, calendar, contacts';
|
|
19383
|
-
emAct.innerHTML=''; emHint.textContent='';
|
|
19384
|
-
} else if(status.email.configured){
|
|
19385
|
-
badge(emB,'oauth','OAuth');
|
|
19386
|
-
if(!emAct.querySelector('button')){
|
|
19387
|
-
emAct.innerHTML = '<button class="btn google" onclick="emailSignIn(this)">' + ICONS.google + 'Sign in with Google</button>';
|
|
19388
|
-
emHint.textContent = 'Opens the real consent screen — Outlook and iCloud work from the same page.';
|
|
19389
|
-
}
|
|
19390
|
-
} else {
|
|
19391
|
-
badge(emB,'warn','Needs setup');
|
|
19392
|
-
emAct.innerHTML='';
|
|
19393
|
-
emHint.textContent = 'Missing service key: add NYLAS_API_KEY to ~/.skykoi/.env, then refresh this page.';
|
|
19394
|
-
}
|
|
19395
|
-
// Token channels
|
|
19396
|
-
const wrap = document.getElementById('channels');
|
|
19397
|
-
wrap.innerHTML = (status.channels||[]).map((c)=>{
|
|
19398
|
-
const icon = ICONS[c.id] || ICONS.generic;
|
|
19399
|
-
const on = c.configured && c.enabled !== false;
|
|
19400
|
-
const b = on ? '<span class="badge ok">Connected</span>'
|
|
19401
|
-
: c.configured ? '<span class="badge warn">Disabled</span>'
|
|
19402
|
-
: '<span class="badge off">Not connected</span>';
|
|
19403
|
-
const btnLabel = on ? 'Reconfigure' : 'Set up';
|
|
19404
|
-
const btnCls = on ? 'btn ghost' : 'btn';
|
|
19405
|
-
const link = c.tokenUrl ? ' · <a href="'+esc(c.tokenUrl)+'" target="_blank" rel="noopener">'+esc(c.tokenUrlLabel||'Get token')+' ↗</a>' : '';
|
|
19406
|
-
return '<div class="card"><div class="row">'
|
|
19407
|
-
+ '<div class="chip">'+icon+'</div>'
|
|
19408
|
-
+ '<div class="info"><div class="name">'+esc(c.label)+'</div><div class="detail">'+esc(c.blurb)+link+'</div></div>'
|
|
19409
|
-
+ b
|
|
19410
|
-
+ '<button class="'+btnCls+'" onclick="runSetup(\\''+esc(c.id)+'\\',\\''+esc(c.label)+'\\',this)">'+btnLabel+'</button>'
|
|
19411
|
-
+ '</div><div class="hint" id="hint-'+esc(c.id)+'"></div></div>';
|
|
19412
|
-
}).join('');
|
|
19413
|
-
}
|
|
19414
|
-
|
|
19415
|
-
async function refresh(){ try{ await fetchStatus(); }catch{} }
|
|
19416
|
-
|
|
19417
|
-
// — WhatsApp QR loop (start → poll wait → linked) —
|
|
19418
|
-
let waStarted = false, waLinkedShown = false;
|
|
19419
|
-
async function startWhatsApp(){
|
|
19420
|
-
if(waStarted) return; waStarted = true;
|
|
19421
|
-
const img=document.getElementById('wa-qr'), box=document.getElementById('wa-qrbox'),
|
|
19422
|
-
hint=document.getElementById('wa-hint'), b=document.getElementById('wa-badge');
|
|
19423
|
-
async function loop(){
|
|
19424
|
-
if(waLinkedShown) return;
|
|
19425
|
-
try{
|
|
19426
|
-
const r=await fetch('/connect/api/whatsapp/start',{method:'POST'});
|
|
19427
|
-
const d=await r.json();
|
|
19428
|
-
if(d.linked){ badge(b,'ok','Linked'); box.style.display='none'; hint.textContent=''; waLinkedShown=true; return; }
|
|
19429
|
-
if(d.qrDataUrl){ img.src=d.qrDataUrl; box.style.display='flex'; badge(b,'warn','Scan to link'); hint.textContent='Code refreshes automatically.'; }
|
|
19430
|
-
const w=await fetch('/connect/api/whatsapp/wait',{method:'POST'});
|
|
19431
|
-
const wd=await w.json();
|
|
19432
|
-
if(wd.linked){ badge(b,'ok','Linked'); box.style.display='none'; hint.textContent='WhatsApp is connected — your koi can see it now.'; waLinkedShown=true; return; }
|
|
19433
|
-
}catch(e){ hint.textContent='hiccup — retrying…'; }
|
|
19434
|
-
setTimeout(loop,1500);
|
|
19435
|
-
}
|
|
19436
|
-
loop();
|
|
19437
|
-
}
|
|
19438
|
-
|
|
19439
|
-
// — Email hosted OAuth: get the real auth URL, open it, poll until linked —
|
|
19440
|
-
let emPolling = false;
|
|
19441
|
-
async function emailSignIn(btn){
|
|
19442
|
-
btn.disabled = true; btn.textContent = 'Opening sign-in…';
|
|
19443
|
-
const hint = document.getElementById('em-hint');
|
|
19444
|
-
try{
|
|
19445
|
-
const r = await fetch('/connect/api/email/start',{method:'POST'});
|
|
19446
|
-
const d = await r.json();
|
|
19447
|
-
if(d.linked){ await refresh(); return; }
|
|
19448
|
-
if(!d.authUrl){ hint.textContent = d.error || 'Could not start the sign-in flow.'; resetEmailBtn(); return; }
|
|
19449
|
-
window.open(d.authUrl, '_blank', 'noopener');
|
|
19450
|
-
hint.textContent = 'Finish the consent screen in the tab that opened — this card flips to Linked automatically.';
|
|
19451
|
-
if(!emPolling){ emPolling = true; pollEmail(); }
|
|
19452
|
-
}catch(e){ hint.textContent = 'Something hiccuped — try again.'; resetEmailBtn(); }
|
|
19453
|
-
}
|
|
19454
|
-
function resetEmailBtn(){
|
|
19455
|
-
const emAct = document.getElementById('em-action');
|
|
19456
|
-
emAct.innerHTML = '<button class="btn google" onclick="emailSignIn(this)">' + ICONS.google + 'Sign in with Google</button>';
|
|
19457
|
-
}
|
|
19458
|
-
async function pollEmail(){
|
|
19459
|
-
try{
|
|
19460
|
-
const r = await fetch('/connect/api/status'); const s = await r.json();
|
|
19461
|
-
if(s.email.linked){ status = s; emPolling = false; paint(); return; }
|
|
19462
|
-
}catch{}
|
|
19463
|
-
setTimeout(pollEmail, 2500);
|
|
19464
|
-
}
|
|
19465
|
-
|
|
19466
|
-
// — Guided Terminal setup for token channels —
|
|
19467
|
-
async function runSetup(id,label,btn){
|
|
19468
|
-
btn.disabled = true; const orig = btn.textContent; btn.textContent='Opening…';
|
|
19469
|
-
try{
|
|
19470
|
-
const r = await fetch('/connect/api/run?channel='+encodeURIComponent(id),{method:'POST'});
|
|
19471
|
-
const d = await r.json();
|
|
19472
|
-
const hint = document.getElementById('hint-'+id);
|
|
19473
|
-
if(d.ok){ hint.textContent = 'A Terminal window opened with the guided setup — pick '+label+' in the wizard, finish there, then hit refresh.'; }
|
|
19474
|
-
else { hint.textContent = d.error || 'Could not open the setup flow.'; }
|
|
19475
|
-
}catch(e){}
|
|
19476
|
-
setTimeout(()=>{ btn.disabled=false; btn.textContent=orig; },4000);
|
|
19477
|
-
}
|
|
19478
|
-
|
|
19479
|
-
fetchStatus().catch(()=>{ document.getElementById('wa-hint').textContent='Gateway status unavailable — refresh in a moment.'; });
|
|
19480
|
-
setInterval(()=>{ fetchStatus().catch(()=>{}); }, 12000);
|
|
19481
|
-
<\/script></body></html>`;
|
|
19482
|
-
}
|
|
19483
19244
|
function createConnectPageHandler(opts) {
|
|
19484
19245
|
return async (req, res) => {
|
|
19485
19246
|
const url = new URL(req.url ?? "/", `http://${opts.bindHost}:${opts.port}`);
|
|
@@ -19491,9 +19252,9 @@ function createConnectPageHandler(opts) {
|
|
|
19491
19252
|
}
|
|
19492
19253
|
try {
|
|
19493
19254
|
if (url.pathname === "/connect") {
|
|
19494
|
-
res.statusCode =
|
|
19495
|
-
res.setHeader("
|
|
19496
|
-
res.end(
|
|
19255
|
+
res.statusCode = 302;
|
|
19256
|
+
res.setHeader("Location", "https://koi.skykoi.com/connect");
|
|
19257
|
+
res.end();
|
|
19497
19258
|
return true;
|
|
19498
19259
|
}
|
|
19499
19260
|
if (url.pathname === "/connect/api/status") {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { U as loadSKYKOIPlugins } from "./reply-
|
|
1
|
+
import { U as loadSKYKOIPlugins } from "./reply-CDp9q1Vc.js";
|
|
2
2
|
import { t as createSubsystemLogger } from "./subsystem-gU4M25gl.js";
|
|
3
3
|
import { l as normalizeKoiId } from "./session-key-BIl6GRQN.js";
|
|
4
4
|
import { b as sleep } from "./utils-BTCspqG1.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { B as requestHeartbeatNow, Dn as peekSystemEvents, Gt as resolveUserTimezone, St as resolveIndicatorType, V as setHeartbeatWakeHandler, Vt as resolveEffectiveMessagesConfig, _n as DEFAULT_HEARTBEAT_EVERY, bn as stripHeartbeatToken, d as isEmbeddedPiRunActive, fn as CommandLane, gn as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, ln as enqueueCommandInLane, t as getReplyFromConfig, un as getQueueSize, vn as isHeartbeatContentEffectivelyEmpty, vt as resolveHeartbeatVisibility, yn as resolveHeartbeatPrompt$1, yt as emitHeartbeatEvent } from "./reply-
|
|
1
|
+
import { B as requestHeartbeatNow, Dn as peekSystemEvents, Gt as resolveUserTimezone, St as resolveIndicatorType, V as setHeartbeatWakeHandler, Vt as resolveEffectiveMessagesConfig, _n as DEFAULT_HEARTBEAT_EVERY, bn as stripHeartbeatToken, d as isEmbeddedPiRunActive, fn as CommandLane, gn as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, ln as enqueueCommandInLane, t as getReplyFromConfig, un as getQueueSize, vn as isHeartbeatContentEffectivelyEmpty, vt as resolveHeartbeatVisibility, yn as resolveHeartbeatPrompt$1, yt as emitHeartbeatEvent } from "./reply-CDp9q1Vc.js";
|
|
2
2
|
import { s as defaultRuntime, t as createSubsystemLogger } from "./subsystem-gU4M25gl.js";
|
|
3
3
|
import { n as info } from "./globals-4hwkGgXA.js";
|
|
4
4
|
import { n as isRich, r as theme, t as colorize } from "./theme-Ql6JHKzG.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "./pi-embedded-helpers-BnsMD0to.js";
|
|
2
|
-
import "./reply-
|
|
2
|
+
import "./reply-CDp9q1Vc.js";
|
|
3
3
|
import { s as defaultRuntime } from "./subsystem-gU4M25gl.js";
|
|
4
4
|
import "./paths-VdmjGGyc.js";
|
|
5
5
|
import "./globals-4hwkGgXA.js";
|
|
@@ -88,10 +88,10 @@ import "./registry-BDi8qkVO.js";
|
|
|
88
88
|
import "./native-window-DumLjKeL.js";
|
|
89
89
|
import "./action-ledger-CZm1RLNd.js";
|
|
90
90
|
import "./event-log-8Gy24Q8h.js";
|
|
91
|
-
import { a as resolvePackedRootDir, i as resolveArchiveKind, n as fileExists, r as readJsonFile, t as extractArchive } from "./archive-
|
|
91
|
+
import { a as resolvePackedRootDir, i as resolveArchiveKind, n as fileExists, r as readJsonFile, t as extractArchive } from "./archive-v5c_oZ0M.js";
|
|
92
92
|
import { t as renderTable } from "./table-SaWmGh81.js";
|
|
93
93
|
import { a as parseFrontmatter, n as loadWorkspaceHookEntries, t as buildWorkspaceHookStatus } from "./hooks-status-NwL9AkZD.js";
|
|
94
|
-
import { t as buildPluginStatusReport } from "./status-
|
|
94
|
+
import { t as buildPluginStatusReport } from "./status-unalYyJY.js";
|
|
95
95
|
import fs from "node:fs";
|
|
96
96
|
import path from "node:path";
|
|
97
97
|
import os from "node:os";
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import "./pi-embedded-helpers-BnsMD0to.js";
|
|
3
|
-
import { Hn as applyTemplate, dt as monitorWebChannel, gt as waitForever, mt as installUnhandledRejectionHandler, t as getReplyFromConfig } from "./reply-
|
|
3
|
+
import { Hn as applyTemplate, dt as monitorWebChannel, gt as waitForever, mt as installUnhandledRejectionHandler, t as getReplyFromConfig } from "./reply-CDp9q1Vc.js";
|
|
4
4
|
import { r as enableConsoleCapture } from "./subsystem-gU4M25gl.js";
|
|
5
5
|
import "./paths-VdmjGGyc.js";
|
|
6
6
|
import "./globals-4hwkGgXA.js";
|
|
@@ -88,25 +88,25 @@ import "./registry-BDi8qkVO.js";
|
|
|
88
88
|
import "./native-window-DumLjKeL.js";
|
|
89
89
|
import "./action-ledger-CZm1RLNd.js";
|
|
90
90
|
import "./event-log-8Gy24Q8h.js";
|
|
91
|
-
import { t as createDefaultDeps } from "./deps-
|
|
91
|
+
import { t as createDefaultDeps } from "./deps-CVjDioW-.js";
|
|
92
92
|
import { l as ensureBinary, u as promptYesNo } from "./tailscale-BX7pFm3E.js";
|
|
93
93
|
import { t as isMainModule } from "./is-main-K-6EEb_n.js";
|
|
94
94
|
import { t as ensureSKYKOICliOnPath } from "./path-env-1_C-JRUU.js";
|
|
95
95
|
import { t as assertSupportedRuntime } from "./runtime-guard-QJDAE0ub.js";
|
|
96
96
|
import "./ports-C6-lHXUM.js";
|
|
97
|
-
import "./config-guard-
|
|
97
|
+
import "./config-guard-qNjpWyqh.js";
|
|
98
98
|
import "./logging-B2js4Jgc.js";
|
|
99
99
|
import "./note-Dgsh9TJE.js";
|
|
100
100
|
import "./clack-prompter-DI8b5Pl-.js";
|
|
101
|
-
import "./onboarding-
|
|
102
|
-
import "./onboard-skills-
|
|
103
|
-
import "./github-copilot-auth-
|
|
104
|
-
import "./onboard-channels-
|
|
101
|
+
import "./onboarding-KjPht-vT.js";
|
|
102
|
+
import "./onboard-skills-D2PuvOlq.js";
|
|
103
|
+
import "./github-copilot-auth-W7sylWjb.js";
|
|
104
|
+
import "./onboard-channels-DXgzUduh.js";
|
|
105
105
|
import "./plugin-auto-enable-D5QYYZDH.js";
|
|
106
|
-
import "./archive-
|
|
106
|
+
import "./archive-v5c_oZ0M.js";
|
|
107
107
|
import "./skill-scanner-b9MamBYt.js";
|
|
108
|
-
import "./installs-
|
|
109
|
-
import "./health-format-
|
|
108
|
+
import "./installs-DYxVB0wb.js";
|
|
109
|
+
import "./health-format-BbpMt6U1.js";
|
|
110
110
|
import "./update-runner-DbYE4uWc.js";
|
|
111
111
|
import "./auth-Bv7GrJIF.js";
|
|
112
112
|
import "./audit-CdSf5yc6.js";
|
|
@@ -117,15 +117,15 @@ import "./systemd-5f0_yK5K.js";
|
|
|
117
117
|
import "./diagnostics-Db0yQkCa.js";
|
|
118
118
|
import "./node-service-FpI5_Kev.js";
|
|
119
119
|
import "./channels-status-issues-BUOqiSuy.js";
|
|
120
|
-
import "./doctor-completion-
|
|
121
|
-
import "./register.subclis-
|
|
120
|
+
import "./doctor-completion-BmQxtaJp.js";
|
|
121
|
+
import "./register.subclis-D4icX3hP.js";
|
|
122
122
|
import "./gateway-rpc-Dsim6rTp.js";
|
|
123
123
|
import "./help-format-DaracUAB.js";
|
|
124
124
|
import "./admin-unlock-CDnzQ2kS.js";
|
|
125
|
-
import "./koi-
|
|
126
|
-
import "./plugin-registry-
|
|
125
|
+
import "./koi-B-adVRJ0.js";
|
|
126
|
+
import "./plugin-registry-Dd3gYaF4.js";
|
|
127
127
|
import "./control-ui-assets-D2wZfVim.js";
|
|
128
|
-
import "./configure-
|
|
128
|
+
import "./configure-DN6Q8CDB.js";
|
|
129
129
|
import "./daemon-runtime-Cw8HN1z_.js";
|
|
130
130
|
import "./systemd-linger-sox_shlO.js";
|
|
131
131
|
import "./widearea-dns-zHPAPSiI.js";
|
|
@@ -135,14 +135,14 @@ import "./connect-DFIg7P1v.js";
|
|
|
135
135
|
import "./channel-auth-73FQh9tw.js";
|
|
136
136
|
import "./login-oFK0z7-J.js";
|
|
137
137
|
import "./auth-health-Bf0KV9dc.js";
|
|
138
|
-
import "./doctor-
|
|
139
|
-
import "./completion-cli-
|
|
138
|
+
import "./doctor-CYGTkAl0.js";
|
|
139
|
+
import "./completion-cli-K8Ntq43i.js";
|
|
140
140
|
import "./service-audit-CijWRKqR.js";
|
|
141
141
|
import "./hooks-status-NwL9AkZD.js";
|
|
142
|
-
import "./tui-
|
|
142
|
+
import "./tui-eV0dj-x4.js";
|
|
143
143
|
import "./canvas-state-Oz4Obrxj.js";
|
|
144
|
-
import "./channel-options-
|
|
145
|
-
import { n as buildProgram } from "./program-
|
|
144
|
+
import "./channel-options-BO7KFBkh.js";
|
|
145
|
+
import { n as buildProgram } from "./program-BvCROCKp.js";
|
|
146
146
|
import process from "node:process";
|
|
147
147
|
import { fileURLToPath } from "node:url";
|
|
148
148
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { h as resolveUserPath, t as CONFIG_DIR } from "./utils-BTCspqG1.js";
|
|
2
2
|
import { t as runCommandWithTimeout } from "./exec-C3toirSW.js";
|
|
3
3
|
import { a as MANIFEST_KEY } from "./manifest-registry-Ckw3Vy2p.js";
|
|
4
|
-
import { a as resolvePackedRootDir, i as resolveArchiveKind, n as fileExists, r as readJsonFile, t as extractArchive } from "./archive-
|
|
4
|
+
import { a as resolvePackedRootDir, i as resolveArchiveKind, n as fileExists, r as readJsonFile, t as extractArchive } from "./archive-v5c_oZ0M.js";
|
|
5
5
|
import { t as scanDirectoryWithSummary } from "./skill-scanner-b9MamBYt.js";
|
|
6
6
|
import path from "node:path";
|
|
7
7
|
import os from "node:os";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { B as normalizeThinkLevel, F as formatXHighModelHint, H as normalizeVerboseLevel, P as formatThinkingLevels, W as supportsXHighThinking } from "./pi-embedded-helpers-BnsMD0to.js";
|
|
2
|
-
import { Cn as applyVerboseOverride, It as KOI_LANE_NESTED, On as loadModelCatalog, Sn as applyModelOverrideToSessionEntry, T as runWithModelFallback, Un as resolveKoiTimeoutMs, Z as getRemoteSkillEligibility, c as runEmbeddedPiKoi, i as runCliKoi, m as compactEmbeddedPiSession, n as getCliSessionId, o as resolveSendPolicy, r as setCliSessionId, rt as getSkillsSnapshotVersion, xn as clearSessionAuthProfileOverride } from "./reply-
|
|
2
|
+
import { Cn as applyVerboseOverride, It as KOI_LANE_NESTED, On as loadModelCatalog, Sn as applyModelOverrideToSessionEntry, T as runWithModelFallback, Un as resolveKoiTimeoutMs, Z as getRemoteSkillEligibility, c as runEmbeddedPiKoi, i as runCliKoi, m as compactEmbeddedPiSession, n as getCliSessionId, o as resolveSendPolicy, r as setCliSessionId, rt as getSkillsSnapshotVersion, xn as clearSessionAuthProfileOverride } from "./reply-CDp9q1Vc.js";
|
|
3
3
|
import { m as DEFAULT_CHAT_CHANNEL, s as defaultRuntime } from "./subsystem-gU4M25gl.js";
|
|
4
4
|
import { d as resolveKoiIdFromSessionKey, l as normalizeKoiId, u as normalizeMainKey } from "./session-key-BIl6GRQN.js";
|
|
5
5
|
import { S as ensureKoiWorkspace, a as resolveKoiDir, c as resolveKoiSkillsFilter, l as resolveKoiWorkspaceDir, n as listKoiIds, o as resolveKoiModelFallbacksOverride, s as resolveKoiModelPrimary } from "./koi-scope-Cagum3pM.js";
|
|
@@ -15,7 +15,7 @@ import { gt as lookupContextTokens } from "./ca-director-Cj4rkY2x.js";
|
|
|
15
15
|
import { a as resolveOutboundTarget, o as resolveSessionDeliveryTarget } from "./message-BGysnvPK.js";
|
|
16
16
|
import { n as emitKoiEvent, o as registerKoiRunContext, t as clearKoiRunContext } from "./koi-events-D5PuKPcz.js";
|
|
17
17
|
import { s as hasNonzeroUsage } from "./session-cost-usage-Nmd8bPic.js";
|
|
18
|
-
import { t as createDefaultDeps } from "./deps-
|
|
18
|
+
import { t as createDefaultDeps } from "./deps-CVjDioW-.js";
|
|
19
19
|
import crypto from "node:crypto";
|
|
20
20
|
|
|
21
21
|
//#region src/cli/outbound-send-deps.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "./pi-embedded-helpers-BnsMD0to.js";
|
|
2
|
-
import { E as describeFailoverError, K as formatUsageWindowSummary, On as loadModelCatalog, W as loadProviderUsageSummary, c as runEmbeddedPiKoi, q as resolveUsageProviderId } from "./reply-
|
|
2
|
+
import { E as describeFailoverError, K as formatUsageWindowSummary, On as loadModelCatalog, W as loadProviderUsageSummary, c as runEmbeddedPiKoi, q as resolveUsageProviderId } from "./reply-CDp9q1Vc.js";
|
|
3
3
|
import { s as defaultRuntime } from "./subsystem-gU4M25gl.js";
|
|
4
4
|
import { t as CONFIG_PATH } from "./paths-VdmjGGyc.js";
|
|
5
5
|
import "./globals-4hwkGgXA.js";
|
|
@@ -92,7 +92,7 @@ import "./event-log-8Gy24Q8h.js";
|
|
|
92
92
|
import { n as logConfigUpdated } from "./logging-B2js4Jgc.js";
|
|
93
93
|
import "./note-Dgsh9TJE.js";
|
|
94
94
|
import { t as createClackPrompter } from "./clack-prompter-DI8b5Pl-.js";
|
|
95
|
-
import { a as normalizeAlias, c as updateConfig, d as resolvePluginProviders, i as formatTokenK, l as createVpsAwareOAuthHandlers, n as ensureFlagCompatibility, o as resolveKnownKoiId, pt as validateAnthropicSetupToken, r as formatMs, s as resolveModelTarget, t as githubCopilotLoginCommand, u as isRemoteEnvironment, v as applyAuthProfileConfig } from "./github-copilot-auth-
|
|
95
|
+
import { a as normalizeAlias, c as updateConfig, d as resolvePluginProviders, i as formatTokenK, l as createVpsAwareOAuthHandlers, n as ensureFlagCompatibility, o as resolveKnownKoiId, pt as validateAnthropicSetupToken, r as formatMs, s as resolveModelTarget, t as githubCopilotLoginCommand, u as isRemoteEnvironment, v as applyAuthProfileConfig } from "./github-copilot-auth-W7sylWjb.js";
|
|
96
96
|
import { t as renderTable } from "./table-SaWmGh81.js";
|
|
97
97
|
import { i as redactSecrets } from "./format-D-VAp4B3.js";
|
|
98
98
|
import { n as buildAuthHealthSummary, r as formatRemainingShort, t as DEFAULT_OAUTH_WARN_MS } from "./auth-health-Bf0KV9dc.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { U as loadSKYKOIPlugins } from "./reply-
|
|
1
|
+
import { U as loadSKYKOIPlugins } from "./reply-CDp9q1Vc.js";
|
|
2
2
|
import { g as formatChannelSelectionLine, h as formatChannelPrimerLine, t as createSubsystemLogger, v as listChatChannels } from "./subsystem-gU4M25gl.js";
|
|
3
3
|
import { c as normalizeAccountId, t as DEFAULT_ACCOUNT_ID } from "./session-key-BIl6GRQN.js";
|
|
4
4
|
import { l as resolveKoiWorkspaceDir, r as resolveDefaultKoiId } from "./koi-scope-Cagum3pM.js";
|
|
@@ -7,7 +7,7 @@ import { n as listChannelPlugins, t as getChannelPlugin } from "./plugins-C450Dg
|
|
|
7
7
|
import { t as formatDocsLink } from "./links-BqdU0TFi.js";
|
|
8
8
|
import { n as resolveChannelDefaultAccountId } from "./helpers-Bf_7MMN1.js";
|
|
9
9
|
import { i as listChannelPluginCatalogEntries, n as isChannelConfigured } from "./plugin-auto-enable-D5QYYZDH.js";
|
|
10
|
-
import { n as installPluginFromNpmSpec, t as recordPluginInstall } from "./installs-
|
|
10
|
+
import { n as installPluginFromNpmSpec, t as recordPluginInstall } from "./installs-DYxVB0wb.js";
|
|
11
11
|
import fs from "node:fs";
|
|
12
12
|
import path from "node:path";
|
|
13
13
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { On as loadModelCatalog } from "./reply-
|
|
1
|
+
import { On as loadModelCatalog } from "./reply-CDp9q1Vc.js";
|
|
2
2
|
import { f as resolveConfigDir, h as resolveUserPath, s as ensureDir, t as CONFIG_DIR } from "./utils-BTCspqG1.js";
|
|
3
3
|
import { t as runCommandWithTimeout } from "./exec-C3toirSW.js";
|
|
4
4
|
import { T as resolveDefaultKoiWorkspaceDir, a as resolveKoiDir, l as resolveKoiWorkspaceDir, r as resolveDefaultKoiId, s as resolveKoiModelPrimary } from "./koi-scope-Cagum3pM.js";
|
|
@@ -8,8 +8,8 @@ import { _ as resolveSkillKey, d as hasBinary, i as loadWorkspaceSkillEntries, t
|
|
|
8
8
|
import { K as fetchWithSsrFGuard } from "./deliver-ClVjz43p.js";
|
|
9
9
|
import { d as openUrl, g as resolveNodeManagerOptions, r as detectBinary } from "./onboard-helpers-o1U-dn2n.js";
|
|
10
10
|
import { t as resolveBrewExecutable } from "./brew-BV6cdBLU.js";
|
|
11
|
-
import { $ as setOpenrouterApiKey, A as applyQianfanProviderConfig, B as applyXiaomiProviderConfig, C as applyMoonshotConfig, D as applyOpenrouterConfig, E as applyMoonshotProviderConfigCn, F as applyVercelAiGatewayConfig, G as ZAI_DEFAULT_MODEL_REF, H as OPENROUTER_DEFAULT_MODEL_REF, I as applyVercelAiGatewayProviderConfig, J as setGeminiApiKey, K as setAnthropicApiKey, L as applyXaiConfig, M as applySyntheticProviderConfig, N as applyVeniceConfig, O as applyOpenrouterProviderConfig, P as applyVeniceProviderConfig, Q as setOpencodeZenApiKey, R as applyXaiProviderConfig, S as applyKimiCodeProviderConfig, T as applyMoonshotProviderConfig, U as VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF, V as applyZaiConfig, W as XIAOMI_DEFAULT_MODEL_REF, X as setMinimaxApiKey, Y as setKimiCodingApiKey, Z as setMoonshotApiKey, _ as applyMinimaxProviderConfig, at as setXiaomiApiKey, b as applyCloudflareAiGatewayProviderConfig, ct as KIMI_CODING_MODEL_REF, d as resolvePluginProviders, dt as XAI_DEFAULT_MODEL_REF, et as setQianfanApiKey, f as applyOpencodeZenConfig, ft as buildTokenProfileId, g as applyMinimaxConfig, h as applyMinimaxApiProviderConfig, i as formatTokenK, it as setXaiApiKey, j as applySyntheticConfig, k as applyQianfanConfig, l as createVpsAwareOAuthHandlers, lt as MOONSHOT_DEFAULT_MODEL_REF, m as applyMinimaxApiConfig, nt as setVeniceApiKey, ot as setZaiApiKey, p as applyOpencodeZenProviderConfig, pt as validateAnthropicSetupToken, q as setCloudflareAiGatewayConfig, rt as setVercelAiGatewayApiKey, st as writeOAuthCredentials, t as githubCopilotLoginCommand, tt as setSyntheticApiKey, u as isRemoteEnvironment, ut as QIANFAN_DEFAULT_MODEL_REF, v as applyAuthProfileConfig, w as applyMoonshotConfigCn, x as applyKimiCodeConfig, y as applyCloudflareAiGatewayConfig, z as applyXiaomiConfig } from "./github-copilot-auth-
|
|
12
|
-
import { a as enablePluginInConfig } from "./onboard-channels-
|
|
11
|
+
import { $ as setOpenrouterApiKey, A as applyQianfanProviderConfig, B as applyXiaomiProviderConfig, C as applyMoonshotConfig, D as applyOpenrouterConfig, E as applyMoonshotProviderConfigCn, F as applyVercelAiGatewayConfig, G as ZAI_DEFAULT_MODEL_REF, H as OPENROUTER_DEFAULT_MODEL_REF, I as applyVercelAiGatewayProviderConfig, J as setGeminiApiKey, K as setAnthropicApiKey, L as applyXaiConfig, M as applySyntheticProviderConfig, N as applyVeniceConfig, O as applyOpenrouterProviderConfig, P as applyVeniceProviderConfig, Q as setOpencodeZenApiKey, R as applyXaiProviderConfig, S as applyKimiCodeProviderConfig, T as applyMoonshotProviderConfig, U as VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF, V as applyZaiConfig, W as XIAOMI_DEFAULT_MODEL_REF, X as setMinimaxApiKey, Y as setKimiCodingApiKey, Z as setMoonshotApiKey, _ as applyMinimaxProviderConfig, at as setXiaomiApiKey, b as applyCloudflareAiGatewayProviderConfig, ct as KIMI_CODING_MODEL_REF, d as resolvePluginProviders, dt as XAI_DEFAULT_MODEL_REF, et as setQianfanApiKey, f as applyOpencodeZenConfig, ft as buildTokenProfileId, g as applyMinimaxConfig, h as applyMinimaxApiProviderConfig, i as formatTokenK, it as setXaiApiKey, j as applySyntheticConfig, k as applyQianfanConfig, l as createVpsAwareOAuthHandlers, lt as MOONSHOT_DEFAULT_MODEL_REF, m as applyMinimaxApiConfig, nt as setVeniceApiKey, ot as setZaiApiKey, p as applyOpencodeZenProviderConfig, pt as validateAnthropicSetupToken, q as setCloudflareAiGatewayConfig, rt as setVercelAiGatewayApiKey, st as writeOAuthCredentials, t as githubCopilotLoginCommand, tt as setSyntheticApiKey, u as isRemoteEnvironment, ut as QIANFAN_DEFAULT_MODEL_REF, v as applyAuthProfileConfig, w as applyMoonshotConfigCn, x as applyKimiCodeConfig, y as applyCloudflareAiGatewayConfig, z as applyXiaomiConfig } from "./github-copilot-auth-W7sylWjb.js";
|
|
12
|
+
import { a as enablePluginInConfig } from "./onboard-channels-DXgzUduh.js";
|
|
13
13
|
import { t as scanDirectoryWithSummary } from "./skill-scanner-b9MamBYt.js";
|
|
14
14
|
import { t as buildWorkspaceSkillStatus } from "./skills-status-DzGR295b.js";
|
|
15
15
|
import { n as resolveWideAreaDiscoveryDomain } from "./widearea-dns-zHPAPSiI.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Bt as getMemorySearchManager, Dn as peekSystemEvents, G as formatUsageReportLines, W as loadProviderUsageSummary, Z as getRemoteSkillEligibility, p as sha256HexPrefix } from "./reply-
|
|
1
|
+
import { Bt as getMemorySearchManager, Dn as peekSystemEvents, G as formatUsageReportLines, W as loadProviderUsageSummary, Z as getRemoteSkillEligibility, p as sha256HexPrefix } from "./reply-CDp9q1Vc.js";
|
|
2
2
|
import { c as restoreTerminalState, s as defaultRuntime } from "./subsystem-gU4M25gl.js";
|
|
3
3
|
import { n as DEFAULT_GATEWAY_PORT, u as resolveGatewayPort } from "./paths-VdmjGGyc.js";
|
|
4
4
|
import { n as info } from "./globals-4hwkGgXA.js";
|
|
@@ -26,9 +26,9 @@ import { a as findTailscaleBinary, o as getTailnetHostname, s as readTailscaleSt
|
|
|
26
26
|
import { n as resolveChannelDefaultAccountId } from "./helpers-Bf_7MMN1.js";
|
|
27
27
|
import { n as logConfigUpdated } from "./logging-B2js4Jgc.js";
|
|
28
28
|
import { t as WizardCancelledError } from "./prompts-CNzp9M83.js";
|
|
29
|
-
import { d as applyAuthChoice, h as promptAuthChoiceGrouped, l as resolvePreferredProviderForAuthChoice, o as applyPrimaryModel, r as promptRemoteGatewayConfig, s as promptDefaultModel, t as setupSkills, u as warnIfModelConfigLooksOff } from "./onboard-skills-
|
|
30
|
-
import { n as setupChannels } from "./onboard-channels-
|
|
31
|
-
import { a as resolveHeartbeatSummaryForKoi, i as healthCommand, n as formatHealthChannelLines, t as formatHealthCheckFailure } from "./health-format-
|
|
29
|
+
import { d as applyAuthChoice, h as promptAuthChoiceGrouped, l as resolvePreferredProviderForAuthChoice, o as applyPrimaryModel, r as promptRemoteGatewayConfig, s as promptDefaultModel, t as setupSkills, u as warnIfModelConfigLooksOff } from "./onboard-skills-D2PuvOlq.js";
|
|
30
|
+
import { n as setupChannels } from "./onboard-channels-DXgzUduh.js";
|
|
31
|
+
import { a as resolveHeartbeatSummaryForKoi, i as healthCommand, n as formatHealthChannelLines, t as formatHealthCheckFailure } from "./health-format-BbpMt6U1.js";
|
|
32
32
|
import { _ as resolveEffectiveUpdateChannel, c as compareSemverStrings, g as normalizeUpdateChannel, h as formatUpdateChannelLabel, s as checkUpdateStatus } from "./update-runner-DbYE4uWc.js";
|
|
33
33
|
import { i as probeGateway, t as runSecurityAudit } from "./audit-CdSf5yc6.js";
|
|
34
34
|
import { t as renderTable } from "./table-SaWmGh81.js";
|
|
@@ -39,12 +39,12 @@ import { t as readLastGatewayErrorLine } from "./diagnostics-Db0yQkCa.js";
|
|
|
39
39
|
import { t as resolveNodeService } from "./node-service-FpI5_Kev.js";
|
|
40
40
|
import { t as collectChannelStatusIssues } from "./channels-status-issues-BUOqiSuy.js";
|
|
41
41
|
import { i as redactSecrets, n as formatDuration$1, r as formatGatewayAuthUsed, t as formatAge$1 } from "./format-D-VAp4B3.js";
|
|
42
|
-
import { a as formatUpdateOneLiner, i as formatUpdateAvailableHint, o as getUpdateCheckResult, r as ensureCompletionCacheExists, s as resolveUpdateAvailability, t as checkShellCompletionStatus } from "./doctor-completion-
|
|
42
|
+
import { a as formatUpdateOneLiner, i as formatUpdateAvailableHint, o as getUpdateCheckResult, r as ensureCompletionCacheExists, s as resolveUpdateAvailability, t as checkShellCompletionStatus } from "./doctor-completion-BmQxtaJp.js";
|
|
43
43
|
import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-D2wZfVim.js";
|
|
44
44
|
import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-Cw8HN1z_.js";
|
|
45
|
-
import { r as installCompletion } from "./completion-cli-
|
|
45
|
+
import { r as installCompletion } from "./completion-cli-K8Ntq43i.js";
|
|
46
46
|
import { t as buildWorkspaceHookStatus } from "./hooks-status-NwL9AkZD.js";
|
|
47
|
-
import { t as runTui } from "./tui-
|
|
47
|
+
import { t as runTui } from "./tui-eV0dj-x4.js";
|
|
48
48
|
import fs from "node:fs";
|
|
49
49
|
import path from "node:path";
|
|
50
50
|
import os from "node:os";
|