skykoi 2026.3.346 → 2026.3.348
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-CqanAWeP.js → completion-cli-BKnzEhKD.js} +1 -1
- package/dist/{config-guard-DIuwbEuN.js → config-guard-Bf-ThISf.js} +6 -6
- package/dist/{doctor-Bq9kZzFE.js → doctor-B-zT6yKu.js} +1 -1
- package/dist/{doctor-completion-BASELw9V.js → doctor-completion-RSNXbj7B.js} +1 -1
- package/dist/entry.js +1 -1
- package/dist/{gateway-cli-CVnKeAnk.js → gateway-cli-ClM5ZaDB.js} +5 -5
- package/dist/index.js +9 -9
- package/dist/{login-6cWogXSE.js → login-DkcfBPmA.js} +29 -6
- package/dist/{onboarding-QjHd_2Wh.js → onboarding-GhXzKToy.js} +3 -3
- package/dist/{program-BLD936kC.js → program-CSD2VsPa.js} +3 -3
- package/dist/{register.subclis-BGxYoHQq.js → register.subclis-Dqv8ZQmj.js} +4 -4
- package/dist/{run-main-CoQyR6Uk.js → run-main-CBQBut8S.js} +11 -11
- package/dist/{tui-CDRHgQ-e.js → tui-DUxfsLsX.js} +1 -1
- package/dist/{tui-cli-kQJ9NNIZ.js → tui-cli-DLJbtGCa.js} +1 -1
- package/dist/{update-cli-COObgrSw.js → update-cli-1waIwrQu.js} +4 -4
- package/package.json +1 -1
package/dist/build-info.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
e21fb268610b6f764fed9aae217cd8a48a05d0d8db483b2fa94e4e0ef98dd52c
|
|
@@ -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-Dqv8ZQmj.js";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import os from "node:os";
|
|
6
6
|
import fs from "node:fs/promises";
|
|
@@ -27,7 +27,7 @@ import { t as resolveChannelDefaultAccountId } from "./helpers-BJ0RdAWy.js";
|
|
|
27
27
|
import { n as logConfigUpdated, t as formatConfigPath } from "./logging-BYKu4FCl.js";
|
|
28
28
|
import { t as WizardCancelledError } from "./prompts-QLr0uHK3.js";
|
|
29
29
|
import { t as createClackPrompter } from "./clack-prompter-t8CaZFBV.js";
|
|
30
|
-
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-
|
|
30
|
+
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-GhXzKToy.js";
|
|
31
31
|
import { d as applyAuthChoice, f as applyOpenAIConfig, h as promptAuthChoiceGrouped, m as applyGoogleGeminiModelDefault, p as upsertSharedEnvVar, u as warnIfModelConfigLooksOff } from "./onboard-skills-DqXAoYz9.js";
|
|
32
32
|
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-BFYQmIBy.js";
|
|
33
33
|
import { n as setupChannels } from "./onboard-channels-BLdxw-az.js";
|
|
@@ -35,7 +35,7 @@ import { i as healthCommand } from "./health-format-DYu9Xelz.js";
|
|
|
35
35
|
import { t as renderTable } from "./table-DGEf0ecX.js";
|
|
36
36
|
import { t as resolveGatewayService } from "./service-BNfl9qMX.js";
|
|
37
37
|
import { r as isSystemdUserServiceAvailable } from "./systemd-CRc2L6q9.js";
|
|
38
|
-
import { l as getVerboseFlag, o as getFlagValue, r as registerSubCliCommands, s as getPositiveIntFlagValue, u as hasFlag } from "./register.subclis-
|
|
38
|
+
import { l as getVerboseFlag, o as getFlagValue, r as registerSubCliCommands, s as getPositiveIntFlagValue, u as hasFlag } from "./register.subclis-Dqv8ZQmj.js";
|
|
39
39
|
import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-CBIir0rS.js";
|
|
40
40
|
import { t as formatHelpExamples } from "./help-format-D6QlSTzg.js";
|
|
41
41
|
import { t as adminUnlockCommand } from "./admin-unlock-D9kdgQ8v.js";
|
|
@@ -45,8 +45,8 @@ import { n as parsePositiveIntOrUndefined, t as collectOption } from "./helpers-
|
|
|
45
45
|
import { i as CONFIGURE_WIZARD_SECTIONS, n as configureCommand, r as configureCommandWithSections } from "./configure-CjuJRw9Z.js";
|
|
46
46
|
import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, r as isGatewayDaemonRuntime, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-jG1eA54U.js";
|
|
47
47
|
import { n as ensureSystemdUserLingerNonInteractive } from "./systemd-linger-Qf-ZNSXE.js";
|
|
48
|
-
import { t as loginCommand } from "./login-
|
|
49
|
-
import { n as loadAndMaybeMigrateDoctorConfig, t as doctorCommand } from "./doctor-
|
|
48
|
+
import { t as loginCommand } from "./login-DkcfBPmA.js";
|
|
49
|
+
import { n as loadAndMaybeMigrateDoctorConfig, t as doctorCommand } from "./doctor-B-zT6yKu.js";
|
|
50
50
|
import { fileURLToPath } from "node:url";
|
|
51
51
|
import fs from "node:fs";
|
|
52
52
|
import path from "node:path";
|
|
@@ -3105,7 +3105,7 @@ function registerLoginCommand(program) {
|
|
|
3105
3105
|
console.log(theme.muted(` user=${result.userId} org=${result.orgId}`));
|
|
3106
3106
|
}
|
|
3107
3107
|
if (opts.chat !== false && result.gatewayUrl && process.stdin.isTTY && process.stdout.isTTY) {
|
|
3108
|
-
const { runTui } = await import("./tui-
|
|
3108
|
+
const { runTui } = await import("./tui-DUxfsLsX.js").then((n) => n.n);
|
|
3109
3109
|
console.log(theme.muted("\n Opening your koi chat…\n"));
|
|
3110
3110
|
await runTui({
|
|
3111
3111
|
url: result.gatewayUrl,
|
|
@@ -3130,7 +3130,7 @@ function registerLoginCommand(program) {
|
|
|
3130
3130
|
}
|
|
3131
3131
|
});
|
|
3132
3132
|
program.command("whoami").description("Show the currently-logged-in SkyKoi account").action(async () => {
|
|
3133
|
-
const { readAuthFile } = await import("./login-
|
|
3133
|
+
const { readAuthFile } = await import("./login-DkcfBPmA.js").then((n) => n.n);
|
|
3134
3134
|
const auth = await readAuthFile();
|
|
3135
3135
|
if (!auth) {
|
|
3136
3136
|
console.log(theme.muted("Not logged in. Run `skykoi login`."));
|
|
@@ -34,7 +34,7 @@ import { a as repairLaunchAgentBootstrap, i as launchAgentPlistExists, n as isLa
|
|
|
34
34
|
import { r as isSystemdUserServiceAvailable } from "./systemd-CRc2L6q9.js";
|
|
35
35
|
import { t as readLastGatewayErrorLine } from "./diagnostics-BPo5b-50.js";
|
|
36
36
|
import { t as collectChannelStatusIssues } from "./channels-status-issues-RnlrwtQu.js";
|
|
37
|
-
import { n as doctorShellCompletion } from "./doctor-completion-
|
|
37
|
+
import { n as doctorShellCompletion } from "./doctor-completion-RSNXbj7B.js";
|
|
38
38
|
import { n as resolveControlUiDistIndexHealth, r as resolveControlUiDistIndexPathForRoot } from "./control-ui-assets-CUfeis07.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-jG1eA54U.js";
|
|
40
40
|
import { t as ensureSystemdUserLingerInteractive } from "./systemd-linger-Qf-ZNSXE.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-JXsKJ6Xp.js";
|
|
5
5
|
import { c as compareSemverStrings, s as checkUpdateStatus } from "./update-runner--zLQ4p6m.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-BKnzEhKD.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-CBQBut8S.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
|
});
|
|
@@ -86,7 +86,7 @@ import { t as resolveChannelDefaultAccountId } from "./helpers-BJ0RdAWy.js";
|
|
|
86
86
|
import "./logging-BYKu4FCl.js";
|
|
87
87
|
import "./note-JXsKJ6Xp.js";
|
|
88
88
|
import { t as WizardCancelledError } from "./prompts-QLr0uHK3.js";
|
|
89
|
-
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-
|
|
89
|
+
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-GhXzKToy.js";
|
|
90
90
|
import { n as installSkill } from "./onboard-skills-DqXAoYz9.js";
|
|
91
91
|
import "./github-copilot-auth-BFYQmIBy.js";
|
|
92
92
|
import "./onboard-channels-BLdxw-az.js";
|
|
@@ -105,18 +105,18 @@ import { p as resolveGatewayStateDir } from "./systemd-CRc2L6q9.js";
|
|
|
105
105
|
import "./diagnostics-BPo5b-50.js";
|
|
106
106
|
import "./node-service-WjDdCaA0.js";
|
|
107
107
|
import "./channels-status-issues-RnlrwtQu.js";
|
|
108
|
-
import "./doctor-completion-
|
|
109
|
-
import "./register.subclis-
|
|
108
|
+
import "./doctor-completion-RSNXbj7B.js";
|
|
109
|
+
import "./register.subclis-Dqv8ZQmj.js";
|
|
110
110
|
import { a as createOutboundSendDeps$1, i as resolveKoiOutboundTarget, r as resolveKoiDeliveryPlan, t as koiCommand } from "./koi-Dn4CqamU.js";
|
|
111
111
|
import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-CUfeis07.js";
|
|
112
112
|
import "./daemon-runtime-jG1eA54U.js";
|
|
113
113
|
import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } from "./widearea-dns-D764X7td.js";
|
|
114
114
|
import { n as discoverGatewayBeacons } from "./bonjour-discovery-Ci5LSWeP.js";
|
|
115
115
|
import "./ensure-local-gateway-iBqdIUtF.js";
|
|
116
|
-
import "./completion-cli-
|
|
116
|
+
import "./completion-cli-BKnzEhKD.js";
|
|
117
117
|
import "./service-audit-C5l53T2M.js";
|
|
118
118
|
import { i as shouldIncludeHook, n as loadWorkspaceHookEntries, r as resolveHookConfig } from "./hooks-status-7PLz1_ei.js";
|
|
119
|
-
import "./tui-
|
|
119
|
+
import "./tui-DUxfsLsX.js";
|
|
120
120
|
import { t as buildChannelAccountSnapshot } from "./status-nK1ROKw-.js";
|
|
121
121
|
import "./shared-DhCLX1Xs.js";
|
|
122
122
|
import { a as runDaemonStop, i as runDaemonStart, n as runDaemonStatus, o as runDaemonUninstall, r as runDaemonRestart, s as runDaemonInstall } from "./daemon-cli-C-PUA0DR.js";
|
package/dist/index.js
CHANGED
|
@@ -73,11 +73,11 @@ import { t as isMainModule } from "./is-main-DZvllFzQ.js";
|
|
|
73
73
|
import { t as ensureSKYKOICliOnPath } from "./path-env-C7V3KfE6.js";
|
|
74
74
|
import { t as assertSupportedRuntime } from "./runtime-guard-DHvhwccg.js";
|
|
75
75
|
import "./ports-aBOzofHh.js";
|
|
76
|
-
import "./config-guard-
|
|
76
|
+
import "./config-guard-Bf-ThISf.js";
|
|
77
77
|
import "./logging-BYKu4FCl.js";
|
|
78
78
|
import "./note-JXsKJ6Xp.js";
|
|
79
79
|
import "./clack-prompter-t8CaZFBV.js";
|
|
80
|
-
import "./onboarding-
|
|
80
|
+
import "./onboarding-GhXzKToy.js";
|
|
81
81
|
import "./onboard-skills-DqXAoYz9.js";
|
|
82
82
|
import "./github-copilot-auth-BFYQmIBy.js";
|
|
83
83
|
import "./onboard-channels-BLdxw-az.js";
|
|
@@ -96,8 +96,8 @@ import "./systemd-CRc2L6q9.js";
|
|
|
96
96
|
import "./diagnostics-BPo5b-50.js";
|
|
97
97
|
import "./node-service-WjDdCaA0.js";
|
|
98
98
|
import "./channels-status-issues-RnlrwtQu.js";
|
|
99
|
-
import "./doctor-completion-
|
|
100
|
-
import "./register.subclis-
|
|
99
|
+
import "./doctor-completion-RSNXbj7B.js";
|
|
100
|
+
import "./register.subclis-Dqv8ZQmj.js";
|
|
101
101
|
import "./gateway-rpc-CBIir0rS.js";
|
|
102
102
|
import "./help-format-D6QlSTzg.js";
|
|
103
103
|
import "./admin-unlock-D9kdgQ8v.js";
|
|
@@ -110,15 +110,15 @@ import "./systemd-linger-Qf-ZNSXE.js";
|
|
|
110
110
|
import "./widearea-dns-D764X7td.js";
|
|
111
111
|
import "./bonjour-discovery-Ci5LSWeP.js";
|
|
112
112
|
import "./ensure-local-gateway-iBqdIUtF.js";
|
|
113
|
-
import "./login-
|
|
113
|
+
import "./login-DkcfBPmA.js";
|
|
114
114
|
import "./auth-health-DmoN4lSG.js";
|
|
115
|
-
import "./doctor-
|
|
116
|
-
import "./completion-cli-
|
|
115
|
+
import "./doctor-B-zT6yKu.js";
|
|
116
|
+
import "./completion-cli-BKnzEhKD.js";
|
|
117
117
|
import "./service-audit-C5l53T2M.js";
|
|
118
118
|
import "./hooks-status-7PLz1_ei.js";
|
|
119
|
-
import "./tui-
|
|
119
|
+
import "./tui-DUxfsLsX.js";
|
|
120
120
|
import "./channel-options-dvFve-yx.js";
|
|
121
|
-
import { n as buildProgram } from "./program-
|
|
121
|
+
import { n as buildProgram } from "./program-CSD2VsPa.js";
|
|
122
122
|
import process from "node:process";
|
|
123
123
|
import { fileURLToPath } from "node:url";
|
|
124
124
|
|
|
@@ -264,16 +264,17 @@ async function writeOnboardingDebug(outcome) {
|
|
|
264
264
|
await writeFile(join(dir, "onboarding-debug.json"), JSON.stringify(snap, null, 2));
|
|
265
265
|
} catch {}
|
|
266
266
|
}
|
|
267
|
-
const ONBOARDING_KICKOFF_BODY = "[setup] Run your full onboarding NOW, silently in the background, per your Onboarding & user dossier instructions. Investigate this computer and build the complete USER.md AND a valid structured profile.json (REQUIRED — use the EXACT schema in your dossier instructions: identity, people[], business.ventures[]+team, projects[], voice, gaps; the website renders profile.json as my knowledge graph, so always set identity.name, fill every array you can, and never skip it or leave it empty): identity; the people who matter (rank by real two-way message volume, then READ each top person's recent thread); the user's voice/writing style (global + per-person); their business/ventures and team; and their current headspace from recent browser/search activity. Do NOT message me about it — just build the dossier so you already know me when I first message you. This is the initial setup pass; keep refining it each session.";
|
|
267
|
+
const ONBOARDING_KICKOFF_BODY = "[setup] Run your full onboarding NOW, silently in the background, per your Onboarding & user dossier instructions. Investigate this computer and build the complete USER.md AND a valid structured profile.json (REQUIRED — use the EXACT schema in your dossier instructions: identity, people[], business.ventures[]+team, projects[], voice, gaps; the website renders profile.json as my knowledge graph, so always set identity.name, fill every array you can, and never skip it or leave it empty): identity; the people who matter (rank by real two-way message volume, then READ each top person's recent thread); the user's voice/writing style (global + per-person); their business/ventures and team; and their current headspace from recent browser/search activity. If your email/calendar tool is available (Google is connected), SWEEP IT TOO — read Gmail for the user's identity + signature and their most frequent correspondents, read the Calendar for their schedule and recurring meeting attendees, and read Contacts for names + profile photos — and fold all of it into people[]/identity/voice. This is how you learn the user on a device with NO local message history (e.g. a fresh laptop or cloud box). Do NOT message me about it — just build the dossier so you already know me when I first message you. This is the initial setup pass; keep refining it each session.";
|
|
268
268
|
/** Prepend what the account already knows about the human (P1 identity seed) so
|
|
269
269
|
* the koi never starts nameless or asks the user their own name — even on a fresh
|
|
270
270
|
* device with no local data to mine. It then verifies + deepens from there. */
|
|
271
|
-
function buildOnboardingKickoff(human, inheritedDossierMd) {
|
|
271
|
+
function buildOnboardingKickoff(human, inheritedDossierMd, orgContextMd) {
|
|
272
272
|
let head = "";
|
|
273
273
|
if (human && (human.name || human.email)) {
|
|
274
274
|
const facts = [human.name ? `name "${human.name}"` : "", human.email ? `email ${human.email}` : ""].filter(Boolean).join(", ");
|
|
275
275
|
head += `[setup] From your human's SkyKoi account you ALREADY know: ${facts}. Seed identity (name + email) from this immediately, treat it as verified, and NEVER ask the user their own name.\n\n`;
|
|
276
276
|
}
|
|
277
|
+
if (orgContextMd && orgContextMd.trim()) head += `[setup] Shared knowledge about your human's COMPANY and teammates (from the account — contributed by colleagues' kois). Treat it as known, then verify + deepen the company picture (ventures, org chart, clients, shared projects):\n\n--- BEGIN ORG KNOWLEDGE ---\n${orgContextMd}\n--- END ORG KNOWLEDGE ---\n\n`;
|
|
277
278
|
if (inheritedDossierMd && inheritedDossierMd.trim()) head += `[setup] Your other devices have already built this dossier for your human (from the account). START FROM IT as known truth, then VERIFY + DEEPEN it with what THIS device and connected accounts can see — re-verify anything time-sensitive before stating it. Inherited dossier (USER.md):\n\n--- BEGIN INHERITED DOSSIER ---\n${inheritedDossierMd}\n--- END INHERITED DOSSIER ---\n\n`;
|
|
278
279
|
return head + ONBOARDING_KICKOFF_BODY;
|
|
279
280
|
}
|
|
@@ -286,7 +287,12 @@ async function uploadDossier(p) {
|
|
|
286
287
|
const prof = await p.client.request("profile.get", {});
|
|
287
288
|
const dossierMd = typeof prof?.userMd === "string" && prof.userMd.trim() ? prof.userMd : void 0;
|
|
288
289
|
const dossier = prof?.profile ?? void 0;
|
|
289
|
-
|
|
290
|
+
const prof2 = dossier;
|
|
291
|
+
const orgKnowledge = prof2 && (prof2.business !== void 0 || prof2.projects !== void 0) ? {
|
|
292
|
+
business: prof2.business,
|
|
293
|
+
projects: prof2.projects
|
|
294
|
+
} : void 0;
|
|
295
|
+
if (dossier === void 0 && dossierMd === void 0 && orgKnowledge === void 0) return;
|
|
290
296
|
await fetch(`${p.platformUrl}/api/koi/${encodeURIComponent(p.koiId)}/dossier`, {
|
|
291
297
|
method: "PUT",
|
|
292
298
|
headers: {
|
|
@@ -295,7 +301,8 @@ async function uploadDossier(p) {
|
|
|
295
301
|
},
|
|
296
302
|
body: JSON.stringify({
|
|
297
303
|
dossier,
|
|
298
|
-
dossierMd
|
|
304
|
+
dossierMd,
|
|
305
|
+
orgKnowledge
|
|
299
306
|
})
|
|
300
307
|
});
|
|
301
308
|
} catch {}
|
|
@@ -319,7 +326,7 @@ function onboardingActivity(tool) {
|
|
|
319
326
|
* it for the model. We show a clear, live indicator the whole time.
|
|
320
327
|
*/
|
|
321
328
|
async function runOnboardingBeforeChat(opts) {
|
|
322
|
-
const { wsUrl, token, human, inheritedDossierMd, platformUrl, cliToken, koiId } = opts;
|
|
329
|
+
const { wsUrl, token, human, inheritedDossierMd, orgContextMd, platformUrl, cliToken, koiId } = opts;
|
|
323
330
|
const onb = step("Getting to know you");
|
|
324
331
|
let client = null;
|
|
325
332
|
let runId = "";
|
|
@@ -352,7 +359,7 @@ async function runOnboardingBeforeChat(opts) {
|
|
|
352
359
|
try {
|
|
353
360
|
runId = (await client.request("chat.send", {
|
|
354
361
|
sessionKey: "koi:setup:onboarding",
|
|
355
|
-
message: buildOnboardingKickoff(human, inheritedDossierMd),
|
|
362
|
+
message: buildOnboardingKickoff(human, inheritedDossierMd, orgContextMd),
|
|
356
363
|
deliver: false,
|
|
357
364
|
idempotencyKey: randomBytes(12).toString("hex")
|
|
358
365
|
}))?.runId ?? "";
|
|
@@ -470,6 +477,13 @@ async function claimDeviceToKoi(platformUrl, token) {
|
|
|
470
477
|
const koiPlatformUrl = resolvePlatformUrl(String(info.data?.platformUrl || platformUrl));
|
|
471
478
|
const recallApiKey = info.data?.recallApiKey?.trim();
|
|
472
479
|
if (recallApiKey) await persistSkykoiEnvVar("RECALL_AI_API_KEY", recallApiKey).catch(() => {});
|
|
480
|
+
const nylas = info.data?.nylas;
|
|
481
|
+
if (nylas?.grantId) {
|
|
482
|
+
if (nylas.apiKey) await persistSkykoiEnvVar("NYLAS_API_KEY", nylas.apiKey).catch(() => {});
|
|
483
|
+
await persistSkykoiEnvVar("NYLAS_GRANT_ID", nylas.grantId).catch(() => {});
|
|
484
|
+
if (nylas.email) await persistSkykoiEnvVar("NYLAS_EMAIL", nylas.email).catch(() => {});
|
|
485
|
+
if (nylas.apiUri) await persistSkykoiEnvVar("NYLAS_API_URI", nylas.apiUri).catch(() => {});
|
|
486
|
+
}
|
|
473
487
|
const cfg = loadConfig();
|
|
474
488
|
await writeConfigFile({
|
|
475
489
|
...cfg,
|
|
@@ -709,11 +723,19 @@ async function claimAndFinish(platformUrl, token, base, doClaim) {
|
|
|
709
723
|
const runDeviceOnboarding = async (wsUrl, gwToken) => {
|
|
710
724
|
await requestDevicePermissions();
|
|
711
725
|
let inheritedDossierMd;
|
|
726
|
+
let orgContextMd;
|
|
712
727
|
try {
|
|
713
728
|
const dRes = await fetch(`${platformUrl}/api/koi/${encodeURIComponent(claim.koiId)}/dossier`, { headers: { Authorization: `Bearer ${token}` } });
|
|
714
729
|
if (dRes.ok) {
|
|
715
730
|
const d = (await dRes.json().catch(() => ({})))?.data;
|
|
716
731
|
if (typeof d?.dossierMd === "string" && d.dossierMd.trim()) inheritedDossierMd = d.dossierMd;
|
|
732
|
+
const parts = [];
|
|
733
|
+
if (d?.orgKnowledge && Object.keys(d.orgKnowledge).length) parts.push(`Company knowledge: ${JSON.stringify(d.orgKnowledge)}`);
|
|
734
|
+
if (Array.isArray(d?.teamDirectory) && d.teamDirectory.length) {
|
|
735
|
+
const team = d.teamDirectory.map((m) => `${m.name || m.email} (${m.role})`).join(", ");
|
|
736
|
+
parts.push(`Team / account members: ${team}`);
|
|
737
|
+
}
|
|
738
|
+
if (parts.length) orgContextMd = parts.join("\n\n");
|
|
717
739
|
}
|
|
718
740
|
} catch {}
|
|
719
741
|
await runOnboardingBeforeChat({
|
|
@@ -721,6 +743,7 @@ async function claimAndFinish(platformUrl, token, base, doClaim) {
|
|
|
721
743
|
token: gwToken,
|
|
722
744
|
human: claim.human,
|
|
723
745
|
inheritedDossierMd,
|
|
746
|
+
orgContextMd,
|
|
724
747
|
platformUrl,
|
|
725
748
|
cliToken: token,
|
|
726
749
|
koiId: claim.koiId
|
|
@@ -37,12 +37,12 @@ import { t as readLastGatewayErrorLine } from "./diagnostics-BPo5b-50.js";
|
|
|
37
37
|
import { t as resolveNodeService } from "./node-service-WjDdCaA0.js";
|
|
38
38
|
import { t as collectChannelStatusIssues } from "./channels-status-issues-RnlrwtQu.js";
|
|
39
39
|
import { i as redactSecrets, n as formatDuration$1, r as formatGatewayAuthUsed, t as formatAge$1 } from "./format-BPATbSa4.js";
|
|
40
|
-
import { a as formatUpdateOneLiner, i as formatUpdateAvailableHint, o as getUpdateCheckResult, r as ensureCompletionCacheExists, s as resolveUpdateAvailability, t as checkShellCompletionStatus } from "./doctor-completion-
|
|
40
|
+
import { a as formatUpdateOneLiner, i as formatUpdateAvailableHint, o as getUpdateCheckResult, r as ensureCompletionCacheExists, s as resolveUpdateAvailability, t as checkShellCompletionStatus } from "./doctor-completion-RSNXbj7B.js";
|
|
41
41
|
import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-CUfeis07.js";
|
|
42
42
|
import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-jG1eA54U.js";
|
|
43
|
-
import { r as installCompletion } from "./completion-cli-
|
|
43
|
+
import { r as installCompletion } from "./completion-cli-BKnzEhKD.js";
|
|
44
44
|
import { t as buildWorkspaceHookStatus } from "./hooks-status-7PLz1_ei.js";
|
|
45
|
-
import { t as runTui } from "./tui-
|
|
45
|
+
import { t as runTui } from "./tui-DUxfsLsX.js";
|
|
46
46
|
import fs from "node:fs";
|
|
47
47
|
import path from "node:path";
|
|
48
48
|
import os from "node:os";
|
|
@@ -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-DLPVdfTL.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-Bf-ThISf.js";
|
|
9
|
+
import { a as getCommandPath, d as hasHelpOrVersion, l as getVerboseFlag } from "./register.subclis-Dqv8ZQmj.js";
|
|
10
10
|
import { t as ensurePluginRegistryLoaded } from "./plugin-registry-BuRdLnis.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-DUxfsLsX.js";
|
|
12
12
|
import { n as resolveCliChannelOptions } from "./channel-options-dvFve-yx.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-ClM5ZaDB.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-DLJbtGCa.js")).registerTuiCli(program);
|
|
198
198
|
}
|
|
199
199
|
},
|
|
200
200
|
{
|
|
@@ -282,14 +282,14 @@ const entries = [
|
|
|
282
282
|
name: "update",
|
|
283
283
|
description: "CLI update helpers",
|
|
284
284
|
register: async (program) => {
|
|
285
|
-
(await import("./update-cli-
|
|
285
|
+
(await import("./update-cli-1waIwrQu.js")).registerUpdateCli(program);
|
|
286
286
|
}
|
|
287
287
|
},
|
|
288
288
|
{
|
|
289
289
|
name: "completion",
|
|
290
290
|
description: "Generate shell completion script",
|
|
291
291
|
register: async (program) => {
|
|
292
|
-
(await import("./completion-cli-
|
|
292
|
+
(await import("./completion-cli-BKnzEhKD.js").then((n) => n.n)).registerCompletionCli(program);
|
|
293
293
|
}
|
|
294
294
|
}
|
|
295
295
|
];
|
|
@@ -70,11 +70,11 @@ import "./deps-DMHxLgMp.js";
|
|
|
70
70
|
import "./tailscale-CBmv5qCh.js";
|
|
71
71
|
import { t as ensureSKYKOICliOnPath } from "./path-env-C7V3KfE6.js";
|
|
72
72
|
import { t as assertSupportedRuntime } from "./runtime-guard-DHvhwccg.js";
|
|
73
|
-
import { n as PLUGIN_CLI_COMMANDS, r as findRoutedCommand, t as ensureConfigReady } from "./config-guard-
|
|
73
|
+
import { n as PLUGIN_CLI_COMMANDS, r as findRoutedCommand, t as ensureConfigReady } from "./config-guard-Bf-ThISf.js";
|
|
74
74
|
import "./logging-BYKu4FCl.js";
|
|
75
75
|
import "./note-JXsKJ6Xp.js";
|
|
76
76
|
import "./clack-prompter-t8CaZFBV.js";
|
|
77
|
-
import "./onboarding-
|
|
77
|
+
import "./onboarding-GhXzKToy.js";
|
|
78
78
|
import "./onboard-skills-DqXAoYz9.js";
|
|
79
79
|
import "./github-copilot-auth-BFYQmIBy.js";
|
|
80
80
|
import "./onboard-channels-BLdxw-az.js";
|
|
@@ -93,8 +93,8 @@ import "./systemd-CRc2L6q9.js";
|
|
|
93
93
|
import "./diagnostics-BPo5b-50.js";
|
|
94
94
|
import "./node-service-WjDdCaA0.js";
|
|
95
95
|
import "./channels-status-issues-RnlrwtQu.js";
|
|
96
|
-
import "./doctor-completion-
|
|
97
|
-
import { a as getCommandPath, c as getPrimaryCommand, d as hasHelpOrVersion } from "./register.subclis-
|
|
96
|
+
import "./doctor-completion-RSNXbj7B.js";
|
|
97
|
+
import { a as getCommandPath, c as getPrimaryCommand, d as hasHelpOrVersion } from "./register.subclis-Dqv8ZQmj.js";
|
|
98
98
|
import "./gateway-rpc-CBIir0rS.js";
|
|
99
99
|
import "./help-format-D6QlSTzg.js";
|
|
100
100
|
import "./admin-unlock-D9kdgQ8v.js";
|
|
@@ -107,13 +107,13 @@ import "./systemd-linger-Qf-ZNSXE.js";
|
|
|
107
107
|
import "./widearea-dns-D764X7td.js";
|
|
108
108
|
import "./bonjour-discovery-Ci5LSWeP.js";
|
|
109
109
|
import "./ensure-local-gateway-iBqdIUtF.js";
|
|
110
|
-
import "./login-
|
|
110
|
+
import "./login-DkcfBPmA.js";
|
|
111
111
|
import "./auth-health-DmoN4lSG.js";
|
|
112
|
-
import "./doctor-
|
|
113
|
-
import "./completion-cli-
|
|
112
|
+
import "./doctor-B-zT6yKu.js";
|
|
113
|
+
import "./completion-cli-BKnzEhKD.js";
|
|
114
114
|
import "./service-audit-C5l53T2M.js";
|
|
115
115
|
import "./hooks-status-7PLz1_ei.js";
|
|
116
|
-
import { r as emitCliBanner } from "./tui-
|
|
116
|
+
import { r as emitCliBanner } from "./tui-DUxfsLsX.js";
|
|
117
117
|
import process$1 from "node:process";
|
|
118
118
|
import { fileURLToPath } from "node:url";
|
|
119
119
|
import fs from "node:fs";
|
|
@@ -167,7 +167,7 @@ async function runCli(argv = process$1.argv) {
|
|
|
167
167
|
assertSupportedRuntime();
|
|
168
168
|
if (await tryRouteCli(normalizedArgv)) return;
|
|
169
169
|
enableConsoleCapture();
|
|
170
|
-
const { buildProgram } = await import("./program-
|
|
170
|
+
const { buildProgram } = await import("./program-CSD2VsPa.js").then((n) => n.t);
|
|
171
171
|
const program = buildProgram();
|
|
172
172
|
installUnhandledRejectionHandler();
|
|
173
173
|
process$1.on("uncaughtException", (error) => {
|
|
@@ -180,7 +180,7 @@ async function runCli(argv = process$1.argv) {
|
|
|
180
180
|
if (!hasAnyArg && !wantsHelpOrVersion) {
|
|
181
181
|
let isLoggedIn = false;
|
|
182
182
|
try {
|
|
183
|
-
const { readAuthFile } = await import("./login-
|
|
183
|
+
const { readAuthFile } = await import("./login-DkcfBPmA.js").then((n) => n.n);
|
|
184
184
|
isLoggedIn = !!(await readAuthFile())?.token;
|
|
185
185
|
} catch {}
|
|
186
186
|
let defaultCommand = "tui";
|
|
@@ -200,7 +200,7 @@ async function runCli(argv = process$1.argv) {
|
|
|
200
200
|
}
|
|
201
201
|
const primary = getPrimaryCommand(parseArgv);
|
|
202
202
|
if (primary) {
|
|
203
|
-
const { registerSubCliByName } = await import("./register.subclis-
|
|
203
|
+
const { registerSubCliByName } = await import("./register.subclis-Dqv8ZQmj.js").then((n) => n.i);
|
|
204
204
|
await registerSubCliByName(program, primary);
|
|
205
205
|
}
|
|
206
206
|
if (!!primary && PLUGIN_CLI_COMMANDS.has(primary)) {
|
|
@@ -3455,7 +3455,7 @@ async function runTui(opts) {
|
|
|
3455
3455
|
} catch {}
|
|
3456
3456
|
process.stdout.write("\n Your koi lost its connection and couldn't get it back on its own.\n Signing you back in to bring it online…\n\n");
|
|
3457
3457
|
try {
|
|
3458
|
-
const { loginCommand } = await import("./login-
|
|
3458
|
+
const { loginCommand } = await import("./login-DkcfBPmA.js").then((n) => n.n);
|
|
3459
3459
|
const result = await loginCommand({});
|
|
3460
3460
|
if (result?.ok) {
|
|
3461
3461
|
process.stdout.write("\n All set — reopening your koi…\n\n");
|
|
@@ -48,7 +48,7 @@ import "./systemd-CRc2L6q9.js";
|
|
|
48
48
|
import "./diagnostics-BPo5b-50.js";
|
|
49
49
|
import "./daemon-runtime-jG1eA54U.js";
|
|
50
50
|
import "./ensure-local-gateway-iBqdIUtF.js";
|
|
51
|
-
import { t as runTui } from "./tui-
|
|
51
|
+
import { t as runTui } from "./tui-DUxfsLsX.js";
|
|
52
52
|
|
|
53
53
|
//#region src/cli/tui-cli.ts
|
|
54
54
|
function registerTuiCli(program) {
|
|
@@ -86,15 +86,15 @@ import "./service-BNfl9qMX.js";
|
|
|
86
86
|
import "./systemd-CRc2L6q9.js";
|
|
87
87
|
import "./diagnostics-BPo5b-50.js";
|
|
88
88
|
import "./channels-status-issues-RnlrwtQu.js";
|
|
89
|
-
import { a as formatUpdateOneLiner, i as formatUpdateAvailableHint, r as ensureCompletionCacheExists, s as resolveUpdateAvailability, t as checkShellCompletionStatus } from "./doctor-completion-
|
|
90
|
-
import "./register.subclis-
|
|
89
|
+
import { a as formatUpdateOneLiner, i as formatUpdateAvailableHint, r as ensureCompletionCacheExists, s as resolveUpdateAvailability, t as checkShellCompletionStatus } from "./doctor-completion-RSNXbj7B.js";
|
|
90
|
+
import "./register.subclis-Dqv8ZQmj.js";
|
|
91
91
|
import { t as formatHelpExamples } from "./help-format-D6QlSTzg.js";
|
|
92
92
|
import "./control-ui-assets-CUfeis07.js";
|
|
93
93
|
import "./daemon-runtime-jG1eA54U.js";
|
|
94
94
|
import "./systemd-linger-Qf-ZNSXE.js";
|
|
95
95
|
import "./auth-health-DmoN4lSG.js";
|
|
96
|
-
import { t as doctorCommand } from "./doctor-
|
|
97
|
-
import { r as installCompletion } from "./completion-cli-
|
|
96
|
+
import { t as doctorCommand } from "./doctor-B-zT6yKu.js";
|
|
97
|
+
import { r as installCompletion } from "./completion-cli-BKnzEhKD.js";
|
|
98
98
|
import "./service-audit-C5l53T2M.js";
|
|
99
99
|
import "./shared-DhCLX1Xs.js";
|
|
100
100
|
import { r as runDaemonRestart } from "./daemon-cli-C-PUA0DR.js";
|