skykoi 2026.3.362 → 2026.3.364
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-DYZYH4JM.js → archive-CESecfeV.js} +1 -1
- package/dist/build-info.json +2 -2
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{capture-cli-CW5umCXz.js → capture-cli-DpZ59sFU.js} +5 -1
- package/dist/{capture-service-DVPyLtcu.js → capture-service-BPwzlSOE.js} +233 -15
- package/dist/{channel-options-DseZbwUS.js → channel-options-zwslyp06.js} +1 -1
- package/dist/{channels-cli-tUGW1BdN.js → channels-cli-CWt6ydPN.js} +6 -6
- package/dist/cli/daemon-cli.js +1 -1
- package/dist/{cli-BJ_2gOn-.js → cli-DNGeeH_O.js} +1 -1
- package/dist/{completion-cli-BBwoUVln.js → completion-cli-Rdq7S5KE.js} +1 -1
- package/dist/{config-guard-BxZWOy88.js → config-guard-Dd4poXH0.js} +13 -13
- package/dist/{configure-CFDkXjgL.js → configure-DFrODS29.js} +3 -3
- package/dist/{daemon-cli-DM4-EaCQ.js → daemon-cli-2wt4he6F.js} +1 -1
- package/dist/{deps-CICTh0V_.js → deps-0dHAqQPZ.js} +1 -1
- package/dist/{doctor-BpP981es.js → doctor-Cjp7w46N.js} +3 -3
- package/dist/{doctor-completion-CroMxa0u.js → doctor-completion-Cu9-JAii.js} +1 -1
- package/dist/entry.js +1 -1
- package/dist/extension-api.js +1 -1
- package/dist/{gateway-cli-TiqIwiHa.js → gateway-cli-DlCltfZd.js} +16 -16
- package/dist/{github-copilot-auth-B61AHThq.js → github-copilot-auth-CRPmNlXU.js} +1 -1
- package/dist/{health-format-Dw75LDa6.js → health-format-Cv2SBzMq.js} +1 -1
- package/dist/{hooks-cli-BWjd2y2G.js → hooks-cli-D_pptHPL.js} +3 -3
- package/dist/index.js +19 -19
- package/dist/{installs-BzTBsTtR.js → installs-J0qld2XT.js} +1 -1
- package/dist/{koi-D_JJc8iu.js → koi-CwOIbGaZ.js} +2 -2
- package/dist/{models-cli-DXXnp1Xi.js → models-cli-CGHn_wNj.js} +2 -2
- package/dist/{onboard-channels-Bwc8efrA.js → onboard-channels-CwSayqE8.js} +2 -2
- package/dist/{onboard-skills-B_7nD3Sb.js → onboard-skills-D8KGRTxy.js} +3 -3
- package/dist/{onboarding-D1yxhbJo.js → onboarding-jtvwJRjY.js} +6 -6
- package/dist/{plugin-registry-DpZrr3UC.js → plugin-registry-DdBnvr9h.js} +1 -1
- package/dist/plugin-sdk/capture/capture-store.d.ts +1 -1
- package/dist/plugin-sdk/capture/message-capture.d.ts +3 -0
- package/dist/plugin-sdk/index.js +12 -12
- package/dist/plugin-sdk/{pi-model-discovery-CBWcyyqn.js → pi-model-discovery-szlzYGsC.js} +3 -3
- package/dist/{plugins-cli-C8lj6nYa.js → plugins-cli-DkDnozFB.js} +5 -5
- package/dist/{program-BUsVm8Fg.js → program-DqVGs3Mv.js} +4 -4
- package/dist/{register.subclis-CeICyB4l.js → register.subclis-BfuAlPlS.js} +11 -11
- package/dist/{reply-Bb7g4UzX.js → reply-mOlXreGp.js} +1 -1
- package/dist/{run-main-BTRshA-a.js → run-main-ByOnbm2b.js} +20 -20
- package/dist/{server-node-events-vRSruV-g.js → server-node-events-5bZjkTUd.js} +3 -3
- package/dist/{status-q2g_QGj0.js → status-BXwm4BKo.js} +1 -1
- package/dist/{update-B6qshQlu.js → update-BogXnYzz.js} +1 -1
- package/dist/{update-cli-DFC5PpoU.js → update-cli-6HmBtoQZ.js} +11 -11
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { i as __require, o as __toESM, t as __commonJSMin } from "./chunk-D_gEzPfs.js";
|
|
2
|
-
import { mt as require_inherits } from "./reply-
|
|
2
|
+
import { mt as require_inherits } from "./reply-mOlXreGp.js";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import fs from "node:fs/promises";
|
|
5
5
|
import * as tar from "tar";
|
package/dist/build-info.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
193069b87e141ae2579ebcb687c1267e8fb67c1ba068383abae63b70a0f45639
|
|
@@ -720,7 +720,7 @@ function startWindowCapture() {
|
|
|
720
720
|
|
|
721
721
|
//#endregion
|
|
722
722
|
//#region src/capture/browser-capture.ts
|
|
723
|
-
const EXEC_TIMEOUT$
|
|
723
|
+
const EXEC_TIMEOUT$4 = 5e3;
|
|
724
724
|
const SAFARI_TABS_SCRIPT = `
|
|
725
725
|
tell application "System Events" to set safariRunning to exists (process "Safari")
|
|
726
726
|
if not safariRunning then return ""
|
|
@@ -750,7 +750,7 @@ end tell
|
|
|
750
750
|
function runOsascript(script) {
|
|
751
751
|
try {
|
|
752
752
|
return execSync(`osascript -e ${JSON.stringify(script)}`, {
|
|
753
|
-
timeout: EXEC_TIMEOUT$
|
|
753
|
+
timeout: EXEC_TIMEOUT$4,
|
|
754
754
|
encoding: "utf8",
|
|
755
755
|
stdio: [
|
|
756
756
|
"pipe",
|
|
@@ -774,12 +774,12 @@ function parseTabs(raw, browser) {
|
|
|
774
774
|
};
|
|
775
775
|
}).filter((t) => t !== null);
|
|
776
776
|
}
|
|
777
|
-
function querySqlite(dbPath, query) {
|
|
777
|
+
function querySqlite$1(dbPath, query) {
|
|
778
778
|
const tmp = join(homedir(), ".skykoi", "capture", `_tmp_${Date.now()}.db`);
|
|
779
779
|
try {
|
|
780
780
|
copyFileSync(dbPath, tmp);
|
|
781
781
|
return execSync(`sqlite3 -json ${JSON.stringify(tmp)} ${JSON.stringify(query)}`, {
|
|
782
|
-
timeout: EXEC_TIMEOUT$
|
|
782
|
+
timeout: EXEC_TIMEOUT$4,
|
|
783
783
|
encoding: "utf8",
|
|
784
784
|
stdio: [
|
|
785
785
|
"pipe",
|
|
@@ -800,7 +800,7 @@ const CHROME_HISTORY_DB = join(homedir(), "Library", "Application Support", "Goo
|
|
|
800
800
|
const CORE_DATA_OFFSET = 978307200;
|
|
801
801
|
function getSafariHistory(sinceTs) {
|
|
802
802
|
if (!existsSync(SAFARI_HISTORY_DB)) return [];
|
|
803
|
-
const raw = querySqlite(SAFARI_HISTORY_DB, `SELECT h.url, v.title, v.visit_time FROM history_items h JOIN history_visits v ON h.id = v.history_item WHERE v.visit_time > ${Math.floor(sinceTs / 1e3) - CORE_DATA_OFFSET} ORDER BY v.visit_time DESC LIMIT 20`);
|
|
803
|
+
const raw = querySqlite$1(SAFARI_HISTORY_DB, `SELECT h.url, v.title, v.visit_time FROM history_items h JOIN history_visits v ON h.id = v.history_item WHERE v.visit_time > ${Math.floor(sinceTs / 1e3) - CORE_DATA_OFFSET} ORDER BY v.visit_time DESC LIMIT 20`);
|
|
804
804
|
if (!raw) return [];
|
|
805
805
|
try {
|
|
806
806
|
return JSON.parse(raw).map((r) => ({
|
|
@@ -816,7 +816,7 @@ function getSafariHistory(sinceTs) {
|
|
|
816
816
|
function getChromeHistory(sinceTs) {
|
|
817
817
|
if (!existsSync(CHROME_HISTORY_DB)) return [];
|
|
818
818
|
const chromeEpochOffset = 11644473600000000n;
|
|
819
|
-
const raw = querySqlite(CHROME_HISTORY_DB, `SELECT url, title, last_visit_time FROM urls WHERE last_visit_time > ${BigInt(sinceTs) * 1000n + chromeEpochOffset} ORDER BY last_visit_time DESC LIMIT 20`);
|
|
819
|
+
const raw = querySqlite$1(CHROME_HISTORY_DB, `SELECT url, title, last_visit_time FROM urls WHERE last_visit_time > ${BigInt(sinceTs) * 1000n + chromeEpochOffset} ORDER BY last_visit_time DESC LIMIT 20`);
|
|
820
820
|
if (!raw) return [];
|
|
821
821
|
try {
|
|
822
822
|
return JSON.parse(raw).map((r) => ({
|
|
@@ -900,7 +900,7 @@ function startBrowserCapture() {
|
|
|
900
900
|
|
|
901
901
|
//#endregion
|
|
902
902
|
//#region src/capture/calendar-capture.ts
|
|
903
|
-
const EXEC_TIMEOUT$
|
|
903
|
+
const EXEC_TIMEOUT$3 = 5e3;
|
|
904
904
|
const CALENDAR_SCRIPT = `
|
|
905
905
|
set now to current date
|
|
906
906
|
set later to now + (2 * hours)
|
|
@@ -949,7 +949,7 @@ function parseEvents(raw) {
|
|
|
949
949
|
function fetchAndEmit(lastJson) {
|
|
950
950
|
try {
|
|
951
951
|
const events = parseEvents(execSync(`osascript -e ${JSON.stringify(CALENDAR_SCRIPT)}`, {
|
|
952
|
-
timeout: EXEC_TIMEOUT$
|
|
952
|
+
timeout: EXEC_TIMEOUT$3,
|
|
953
953
|
encoding: "utf8",
|
|
954
954
|
stdio: [
|
|
955
955
|
"pipe",
|
|
@@ -996,7 +996,7 @@ function startCalendarCapture() {
|
|
|
996
996
|
|
|
997
997
|
//#endregion
|
|
998
998
|
//#region src/capture/screen-capture.ts
|
|
999
|
-
const EXEC_TIMEOUT$
|
|
999
|
+
const EXEC_TIMEOUT$2 = 5e3;
|
|
1000
1000
|
const OCR_TIMEOUT = 15e3;
|
|
1001
1001
|
const MAX_OCR_LENGTH = 15e3;
|
|
1002
1002
|
const SCREENSHOT_PATH = "/tmp/skykoi-screen-capture.png";
|
|
@@ -1037,7 +1037,7 @@ function captureAndOcr() {
|
|
|
1037
1037
|
ocrInFlight = true;
|
|
1038
1038
|
try {
|
|
1039
1039
|
execSync(`screencapture -x -t png ${SCREENSHOT_PATH}`, {
|
|
1040
|
-
timeout: EXEC_TIMEOUT$
|
|
1040
|
+
timeout: EXEC_TIMEOUT$2,
|
|
1041
1041
|
stdio: "pipe"
|
|
1042
1042
|
});
|
|
1043
1043
|
if (!existsSync(SCREENSHOT_PATH)) return;
|
|
@@ -1132,13 +1132,13 @@ async function startScreenCapture() {
|
|
|
1132
1132
|
|
|
1133
1133
|
//#endregion
|
|
1134
1134
|
//#region src/capture/notification-capture.ts
|
|
1135
|
-
const EXEC_TIMEOUT = 5e3;
|
|
1135
|
+
const EXEC_TIMEOUT$1 = 5e3;
|
|
1136
1136
|
const DB_PATH = join(homedir(), "Library/Group Containers/group.com.apple.usernoted/db2/db");
|
|
1137
1137
|
let lastDeliveredDate = 0;
|
|
1138
1138
|
function queryNotificationDb() {
|
|
1139
1139
|
try {
|
|
1140
1140
|
const raw = execSync(`sqlite3 "${DB_PATH}" "${`SELECT app_id, delivered_date FROM record WHERE delivered_date > ${lastDeliveredDate} ORDER BY delivered_date DESC LIMIT 20;`}"`, {
|
|
1141
|
-
timeout: EXEC_TIMEOUT,
|
|
1141
|
+
timeout: EXEC_TIMEOUT$1,
|
|
1142
1142
|
encoding: "utf8"
|
|
1143
1143
|
});
|
|
1144
1144
|
if (!raw?.trim()) return [];
|
|
@@ -1163,12 +1163,12 @@ function queryNotificationDb() {
|
|
|
1163
1163
|
function tryExtractContent(appId, deliveredDate) {
|
|
1164
1164
|
try {
|
|
1165
1165
|
const hex = execSync(`sqlite3 "${DB_PATH}" "${`SELECT hex(data) FROM record WHERE app_id='${appId.replace(/'/g, "''")}' AND delivered_date=${deliveredDate} LIMIT 1;`}"`, {
|
|
1166
|
-
timeout: EXEC_TIMEOUT,
|
|
1166
|
+
timeout: EXEC_TIMEOUT$1,
|
|
1167
1167
|
encoding: "utf8"
|
|
1168
1168
|
}).trim();
|
|
1169
1169
|
if (!hex) return {};
|
|
1170
1170
|
const plistXml = execSync(`echo '${hex}' | xxd -r -p | plutil -convert xml1 -o - -`, {
|
|
1171
|
-
timeout: EXEC_TIMEOUT,
|
|
1171
|
+
timeout: EXEC_TIMEOUT$1,
|
|
1172
1172
|
encoding: "utf8"
|
|
1173
1173
|
});
|
|
1174
1174
|
const titleMatch = plistXml.match(/<key>titl<\/key>\s*<string>([^<]*)<\/string>/);
|
|
@@ -1215,7 +1215,7 @@ function initializeBaseline() {
|
|
|
1215
1215
|
if (!existsSync(DB_PATH)) return;
|
|
1216
1216
|
try {
|
|
1217
1217
|
const raw = execSync(`sqlite3 "${DB_PATH}" "SELECT MAX(delivered_date) FROM record;"`, {
|
|
1218
|
-
timeout: EXEC_TIMEOUT,
|
|
1218
|
+
timeout: EXEC_TIMEOUT$1,
|
|
1219
1219
|
encoding: "utf8"
|
|
1220
1220
|
}).trim();
|
|
1221
1221
|
const val = parseFloat(raw);
|
|
@@ -1245,6 +1245,147 @@ function startNotificationCapture() {
|
|
|
1245
1245
|
} };
|
|
1246
1246
|
}
|
|
1247
1247
|
|
|
1248
|
+
//#endregion
|
|
1249
|
+
//#region src/capture/message-capture.ts
|
|
1250
|
+
const EXEC_TIMEOUT = 5e3;
|
|
1251
|
+
const IMESSAGE_DB = join(homedir(), "Library", "Messages", "chat.db");
|
|
1252
|
+
const WHATSAPP_DB = join(homedir(), "Library/Group Containers/group.net.whatsapp.WhatsApp.shared/ChatStorage.sqlite");
|
|
1253
|
+
const CAPTURE_DIR = join(homedir(), ".skykoi", "capture");
|
|
1254
|
+
let lastImessageRowId = 0;
|
|
1255
|
+
let lastWhatsappTs = 0;
|
|
1256
|
+
function querySqlite(dbPath, query) {
|
|
1257
|
+
const tmp = join(CAPTURE_DIR, `_tmp_msg_${Date.now()}.db`);
|
|
1258
|
+
try {
|
|
1259
|
+
copyFileSync(dbPath, tmp);
|
|
1260
|
+
return execSync(`sqlite3 -json ${JSON.stringify(tmp)} ${JSON.stringify(query)}`, {
|
|
1261
|
+
timeout: EXEC_TIMEOUT,
|
|
1262
|
+
encoding: "utf8",
|
|
1263
|
+
stdio: [
|
|
1264
|
+
"pipe",
|
|
1265
|
+
"pipe",
|
|
1266
|
+
"pipe"
|
|
1267
|
+
]
|
|
1268
|
+
}).trim();
|
|
1269
|
+
} catch {
|
|
1270
|
+
return "";
|
|
1271
|
+
} finally {
|
|
1272
|
+
try {
|
|
1273
|
+
unlinkSync(tmp);
|
|
1274
|
+
} catch {}
|
|
1275
|
+
}
|
|
1276
|
+
}
|
|
1277
|
+
function checkImessage() {
|
|
1278
|
+
if (!existsSync(IMESSAGE_DB)) return;
|
|
1279
|
+
try {
|
|
1280
|
+
const raw = querySqlite(IMESSAGE_DB, `SELECT m.ROWID, m.text, m.is_from_me, m.date, h.id AS handle_id, h.uncanonicalized_id
|
|
1281
|
+
FROM message m LEFT JOIN handle h ON m.handle_id = h.ROWID
|
|
1282
|
+
WHERE m.ROWID > ${lastImessageRowId}
|
|
1283
|
+
ORDER BY m.ROWID DESC LIMIT 10`);
|
|
1284
|
+
if (!raw) return;
|
|
1285
|
+
const rows = JSON.parse(raw);
|
|
1286
|
+
if (rows.length === 0) return;
|
|
1287
|
+
let maxRow = lastImessageRowId;
|
|
1288
|
+
for (const row of rows.reverse()) {
|
|
1289
|
+
if (row.ROWID <= lastImessageRowId) continue;
|
|
1290
|
+
if (row.ROWID > maxRow) maxRow = row.ROWID;
|
|
1291
|
+
const unixMs = Math.floor(row.date / 1e6) + 9783072e5;
|
|
1292
|
+
pushCaptureEvent({
|
|
1293
|
+
source: "message",
|
|
1294
|
+
ts: Date.now(),
|
|
1295
|
+
data: {
|
|
1296
|
+
type: "imessage",
|
|
1297
|
+
from: row.is_from_me ? "me" : row.uncanonicalized_id || row.handle_id || "unknown",
|
|
1298
|
+
text: row.text?.slice(0, 500) || "[attachment]",
|
|
1299
|
+
sentAt: new Date(unixMs).toISOString(),
|
|
1300
|
+
direction: row.is_from_me ? "outgoing" : "incoming"
|
|
1301
|
+
}
|
|
1302
|
+
});
|
|
1303
|
+
}
|
|
1304
|
+
lastImessageRowId = maxRow;
|
|
1305
|
+
} catch {}
|
|
1306
|
+
}
|
|
1307
|
+
function checkWhatsapp() {
|
|
1308
|
+
if (!existsSync(WHATSAPP_DB)) return;
|
|
1309
|
+
try {
|
|
1310
|
+
const raw = querySqlite(WHATSAPP_DB, `SELECT ZMESSAGEDATE, ZTEXT, ZISFROMME, ZFROMJID
|
|
1311
|
+
FROM ZWAMESSAGE
|
|
1312
|
+
WHERE ZMESSAGEDATE > ${lastWhatsappTs}
|
|
1313
|
+
ORDER BY ZMESSAGEDATE DESC LIMIT 10`);
|
|
1314
|
+
if (!raw) return;
|
|
1315
|
+
const rows = JSON.parse(raw);
|
|
1316
|
+
if (rows.length === 0) return;
|
|
1317
|
+
let maxTs = lastWhatsappTs;
|
|
1318
|
+
for (const row of rows.reverse()) {
|
|
1319
|
+
if (row.ZMESSAGEDATE <= lastWhatsappTs) continue;
|
|
1320
|
+
if (row.ZMESSAGEDATE > maxTs) maxTs = row.ZMESSAGEDATE;
|
|
1321
|
+
const unixMs = (row.ZMESSAGEDATE + 978307200) * 1e3;
|
|
1322
|
+
const sender = row.ZFROMJID?.replace(/@s\.whatsapp\.net$/, "") || "unknown";
|
|
1323
|
+
pushCaptureEvent({
|
|
1324
|
+
source: "message",
|
|
1325
|
+
ts: Date.now(),
|
|
1326
|
+
data: {
|
|
1327
|
+
type: "whatsapp",
|
|
1328
|
+
from: row.ZISFROMME ? "me" : sender,
|
|
1329
|
+
text: row.ZTEXT?.slice(0, 500) || "[media]",
|
|
1330
|
+
sentAt: new Date(unixMs).toISOString(),
|
|
1331
|
+
direction: row.ZISFROMME ? "outgoing" : "incoming"
|
|
1332
|
+
}
|
|
1333
|
+
});
|
|
1334
|
+
}
|
|
1335
|
+
lastWhatsappTs = maxTs;
|
|
1336
|
+
} catch {}
|
|
1337
|
+
}
|
|
1338
|
+
function initBaseline() {
|
|
1339
|
+
if (existsSync(IMESSAGE_DB)) try {
|
|
1340
|
+
const raw = querySqlite(IMESSAGE_DB, "SELECT MAX(ROWID) as maxid FROM message");
|
|
1341
|
+
if (raw) {
|
|
1342
|
+
const rows = JSON.parse(raw);
|
|
1343
|
+
if (rows[0]?.maxid) lastImessageRowId = rows[0].maxid;
|
|
1344
|
+
}
|
|
1345
|
+
} catch {}
|
|
1346
|
+
if (existsSync(WHATSAPP_DB)) try {
|
|
1347
|
+
const raw = querySqlite(WHATSAPP_DB, "SELECT MAX(ZMESSAGEDATE) as maxts FROM ZWAMESSAGE");
|
|
1348
|
+
if (raw) {
|
|
1349
|
+
const rows = JSON.parse(raw);
|
|
1350
|
+
if (rows[0]?.maxts) lastWhatsappTs = rows[0].maxts;
|
|
1351
|
+
}
|
|
1352
|
+
} catch {}
|
|
1353
|
+
}
|
|
1354
|
+
function startMessageCapture() {
|
|
1355
|
+
if (process.platform !== "darwin") return { stop: () => {} };
|
|
1356
|
+
initBaseline();
|
|
1357
|
+
const watchers = [];
|
|
1358
|
+
let imsgDebounce = null;
|
|
1359
|
+
let waDebounce = null;
|
|
1360
|
+
if (existsSync(IMESSAGE_DB)) try {
|
|
1361
|
+
const w = watch(IMESSAGE_DB, () => {
|
|
1362
|
+
if (imsgDebounce) clearTimeout(imsgDebounce);
|
|
1363
|
+
imsgDebounce = setTimeout(checkImessage, 500);
|
|
1364
|
+
});
|
|
1365
|
+
watchers.push(w);
|
|
1366
|
+
} catch {}
|
|
1367
|
+
if (existsSync(WHATSAPP_DB)) try {
|
|
1368
|
+
const w = watch(WHATSAPP_DB, () => {
|
|
1369
|
+
if (waDebounce) clearTimeout(waDebounce);
|
|
1370
|
+
waDebounce = setTimeout(checkWhatsapp, 500);
|
|
1371
|
+
});
|
|
1372
|
+
watchers.push(w);
|
|
1373
|
+
} catch {}
|
|
1374
|
+
const fallback = setInterval(() => {
|
|
1375
|
+
checkImessage();
|
|
1376
|
+
checkWhatsapp();
|
|
1377
|
+
}, 3e4);
|
|
1378
|
+
fallback.unref?.();
|
|
1379
|
+
return { stop: () => {
|
|
1380
|
+
for (const w of watchers) try {
|
|
1381
|
+
w.close();
|
|
1382
|
+
} catch {}
|
|
1383
|
+
if (imsgDebounce) clearTimeout(imsgDebounce);
|
|
1384
|
+
if (waDebounce) clearTimeout(waDebounce);
|
|
1385
|
+
clearInterval(fallback);
|
|
1386
|
+
} };
|
|
1387
|
+
}
|
|
1388
|
+
|
|
1248
1389
|
//#endregion
|
|
1249
1390
|
//#region src/capture/capture-service.ts
|
|
1250
1391
|
/**
|
|
@@ -1295,6 +1436,10 @@ function buildCaptureContextBlock() {
|
|
|
1295
1436
|
let source = "input";
|
|
1296
1437
|
if (type === "clipboard") source = "clipboard";
|
|
1297
1438
|
else if (type === "window_title") source = "window";
|
|
1439
|
+
else if (type === "sleep" || type === "wake" || type === "screen_off" || type === "screen_on" || type === "screen_locked" || type === "screen_unlocked" || type === "idle_start" || type === "idle_end" || type === "power" || type === "wifi" || type === "volume" || type === "display_config" || type === "bluetooth" || type === "usb" || type === "volume_mount" || type === "volume_unmount") source = "system";
|
|
1440
|
+
else if (type === "download") source = "downloads";
|
|
1441
|
+
else if (type === "location") source = "location";
|
|
1442
|
+
else if (type === "spotlight") source = "input";
|
|
1298
1443
|
directInputs.push({
|
|
1299
1444
|
source,
|
|
1300
1445
|
ts,
|
|
@@ -1336,6 +1481,8 @@ function buildCaptureContextBlock() {
|
|
|
1336
1481
|
sections.push(`[${ts}] KEY ${mods}${d.key} in ${d.app}`);
|
|
1337
1482
|
} else if (d.type === "click") sections.push(`[${ts}] CLICK ${d.button} (${d.x},${d.y}) in ${d.app}`);
|
|
1338
1483
|
else if (d.type === "app_switch") sections.push(`[${ts}] APP_SWITCH ${d.prev} → ${d.app}`);
|
|
1484
|
+
else if (d.type === "mouse_move") sections.push(`[${ts}] MOUSE (${d.x},${d.y}) in ${d.app}`);
|
|
1485
|
+
else if (d.type === "spotlight") sections.push(`[${ts}] SPOTLIGHT_SEARCH "${d.query}"`);
|
|
1339
1486
|
}
|
|
1340
1487
|
}
|
|
1341
1488
|
if (processes.length > 0) {
|
|
@@ -1448,6 +1595,71 @@ function buildCaptureContextBlock() {
|
|
|
1448
1595
|
sections.push(`[${ts}] ${d.app}${title}${body}`);
|
|
1449
1596
|
}
|
|
1450
1597
|
}
|
|
1598
|
+
const systemEvents = allEvents.filter((e) => e.source === "system");
|
|
1599
|
+
if (systemEvents.length > 0) {
|
|
1600
|
+
sections.push("## Device State");
|
|
1601
|
+
for (const e of systemEvents) {
|
|
1602
|
+
const d = e.data;
|
|
1603
|
+
const ts = new Date(e.ts).toISOString().slice(11, 19);
|
|
1604
|
+
const t = d.type;
|
|
1605
|
+
if (t === "sleep") sections.push(`[${ts}] SLEEP — device going to sleep`);
|
|
1606
|
+
else if (t === "wake") sections.push(`[${ts}] WAKE — device woke up`);
|
|
1607
|
+
else if (t === "screen_off") sections.push(`[${ts}] SCREEN OFF`);
|
|
1608
|
+
else if (t === "screen_on") sections.push(`[${ts}] SCREEN ON`);
|
|
1609
|
+
else if (t === "screen_locked") sections.push(`[${ts}] SCREEN LOCKED`);
|
|
1610
|
+
else if (t === "screen_unlocked") sections.push(`[${ts}] SCREEN UNLOCKED`);
|
|
1611
|
+
else if (t === "idle_start") sections.push(`[${ts}] IDLE — user inactive`);
|
|
1612
|
+
else if (t === "idle_end") sections.push(`[${ts}] ACTIVE — user returned`);
|
|
1613
|
+
else if (t === "power") {
|
|
1614
|
+
const pct = d.batteryPercent ?? "?";
|
|
1615
|
+
const src = d.charging ? "charging" : d.powerSource ?? "battery";
|
|
1616
|
+
const mins = typeof d.minutesRemaining === "number" && d.minutesRemaining >= 0 ? `, ${d.minutesRemaining}min remaining` : "";
|
|
1617
|
+
sections.push(`[${ts}] POWER ${pct}% (${src}${mins})`);
|
|
1618
|
+
} else if (t === "wifi") sections.push(`[${ts}] WIFI ${d.connected ? d.ssid : "disconnected"}`);
|
|
1619
|
+
else if (t === "volume") sections.push(`[${ts}] VOLUME ${d.volume}%${d.muted ? " (muted)" : ""}`);
|
|
1620
|
+
else if (t === "display_config") {
|
|
1621
|
+
const desc = d.displays?.map((dd) => `${dd.width}x${dd.height}${dd.main ? " (main)" : ""}`).join(", ") ?? "";
|
|
1622
|
+
sections.push(`[${ts}] DISPLAYS ${d.count}: ${desc}`);
|
|
1623
|
+
} else if (t === "bluetooth") {
|
|
1624
|
+
const devs = d.devices;
|
|
1625
|
+
sections.push(`[${ts}] BLUETOOTH ${devs?.map((dd) => dd.name).join(", ") || "none"}`);
|
|
1626
|
+
} else if (t === "usb") {
|
|
1627
|
+
const devs = d.devices;
|
|
1628
|
+
sections.push(`[${ts}] USB ${devs?.join(", ") || "none"}`);
|
|
1629
|
+
} else if (t === "volume_mount") sections.push(`[${ts}] MOUNTED ${d.path}`);
|
|
1630
|
+
else if (t === "volume_unmount") sections.push(`[${ts}] UNMOUNTED ${d.path}`);
|
|
1631
|
+
}
|
|
1632
|
+
}
|
|
1633
|
+
const downloads = allEvents.filter((e) => e.source === "downloads");
|
|
1634
|
+
if (downloads.length > 0) {
|
|
1635
|
+
sections.push("## Downloads");
|
|
1636
|
+
for (const e of downloads) {
|
|
1637
|
+
const d = e.data;
|
|
1638
|
+
const ts = new Date(e.ts).toISOString().slice(11, 19);
|
|
1639
|
+
const files = d.files;
|
|
1640
|
+
if (files) for (const f of files) {
|
|
1641
|
+
const sizeStr = f.size > 1024 * 1024 ? `${(f.size / 1024 / 1024).toFixed(1)}MB` : `${(f.size / 1024).toFixed(0)}KB`;
|
|
1642
|
+
sections.push(`[${ts}] DOWNLOADED ${f.name} (${sizeStr})`);
|
|
1643
|
+
}
|
|
1644
|
+
}
|
|
1645
|
+
}
|
|
1646
|
+
const locations = allEvents.filter((e) => e.source === "location");
|
|
1647
|
+
if (locations.length > 0) {
|
|
1648
|
+
const d = locations.at(-1).data;
|
|
1649
|
+
sections.push(`## Location`);
|
|
1650
|
+
sections.push(`Lat: ${d.lat}, Lon: ${d.lon} (±${d.accuracy}m, alt ${d.altitude}m)`);
|
|
1651
|
+
}
|
|
1652
|
+
const messages = allEvents.filter((e) => e.source === "message");
|
|
1653
|
+
if (messages.length > 0) {
|
|
1654
|
+
sections.push("## Messages");
|
|
1655
|
+
for (const e of messages) {
|
|
1656
|
+
const d = e.data;
|
|
1657
|
+
const ts = new Date(e.ts).toISOString().slice(11, 19);
|
|
1658
|
+
const platform = d.type === "imessage" ? "iMessage" : "WhatsApp";
|
|
1659
|
+
const dir = d.direction === "outgoing" ? "→" : "←";
|
|
1660
|
+
sections.push(`[${ts}] ${platform} ${dir} ${d.from}: ${String(d.text).slice(0, 200)}`);
|
|
1661
|
+
}
|
|
1662
|
+
}
|
|
1451
1663
|
if (sections.length === 0) return "";
|
|
1452
1664
|
return "# Device Activity (exact, real-time)\n\n" + sections.join("\n");
|
|
1453
1665
|
}
|
|
@@ -1615,6 +1827,12 @@ async function startCaptureService(opts) {
|
|
|
1615
1827
|
} catch (err) {
|
|
1616
1828
|
console.error(`[capture] Notification capture failed to start: ${err}`);
|
|
1617
1829
|
}
|
|
1830
|
+
try {
|
|
1831
|
+
const messageHandle = startMessageCapture();
|
|
1832
|
+
stops.push(messageHandle.stop);
|
|
1833
|
+
} catch (err) {
|
|
1834
|
+
console.error(`[capture] Message capture failed to start: ${err}`);
|
|
1835
|
+
}
|
|
1618
1836
|
const flushTimer = setInterval(() => {
|
|
1619
1837
|
if (!stopped) flushToDisk();
|
|
1620
1838
|
}, FLUSH_INTERVAL_MS);
|
|
@@ -2,7 +2,7 @@ import { O as CHAT_CHANNEL_ORDER } from "./subsystem-hATE68va.js";
|
|
|
2
2
|
import { t as isTruthyEnvValue } from "./env-ChCKTuXK.js";
|
|
3
3
|
import { n as listChannelPlugins } from "./plugins-BXfIVhTg.js";
|
|
4
4
|
import { i as listChannelPluginCatalogEntries } from "./plugin-auto-enable-Cg3LRidd.js";
|
|
5
|
-
import { t as ensurePluginRegistryLoaded } from "./plugin-registry-
|
|
5
|
+
import { t as ensurePluginRegistryLoaded } from "./plugin-registry-DdBnvr9h.js";
|
|
6
6
|
|
|
7
7
|
//#region src/cli/channel-options.ts
|
|
8
8
|
function dedupe(values) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "./pi-embedded-helpers-VJ9hOBTv.js";
|
|
2
|
-
import { Gt as parseDiscordTarget, Kt as fetchChannelPermissionsDiscord, in as createSlackWebClient, lt as loadProviderUsageSummary, ut as formatUsageReportLines } from "./reply-
|
|
2
|
+
import { Gt as parseDiscordTarget, Kt as fetchChannelPermissionsDiscord, in as createSlackWebClient, lt as loadProviderUsageSummary, ut as formatUsageReportLines } from "./reply-mOlXreGp.js";
|
|
3
3
|
import { f as danger, s as defaultRuntime, w as getResolvedLoggerSettings } from "./subsystem-hATE68va.js";
|
|
4
4
|
import "./paths-VdmjGGyc.js";
|
|
5
5
|
import { r as theme } from "./theme-C5EwWDWE.js";
|
|
@@ -73,20 +73,20 @@ import "./event-log-BJRHlOn8.js";
|
|
|
73
73
|
import { t as resolveChannelDefaultAccountId } from "./helpers-y1KKH5pe.js";
|
|
74
74
|
import "./note-DRoVRuAi.js";
|
|
75
75
|
import { t as createClackPrompter } from "./clack-prompter-B9o3eQeW.js";
|
|
76
|
-
import { i as reloadOnboardingPluginRegistry, n as setupChannels, r as ensureOnboardingPluginInstalled } from "./onboard-channels-
|
|
76
|
+
import { i as reloadOnboardingPluginRegistry, n as setupChannels, r as ensureOnboardingPluginInstalled } from "./onboard-channels-CwSayqE8.js";
|
|
77
77
|
import { i as listChannelPluginCatalogEntries } from "./plugin-auto-enable-Cg3LRidd.js";
|
|
78
|
-
import "./archive-
|
|
78
|
+
import "./archive-CESecfeV.js";
|
|
79
79
|
import "./skill-scanner-CBHxr1An.js";
|
|
80
|
-
import "./installs-
|
|
80
|
+
import "./installs-J0qld2XT.js";
|
|
81
81
|
import "./service-BGkVTESM.js";
|
|
82
82
|
import "./systemd-BzTSelz8.js";
|
|
83
83
|
import "./diagnostics-CFV2YxpG.js";
|
|
84
84
|
import { t as collectChannelStatusIssues } from "./channels-status-issues-BLygTpUh.js";
|
|
85
|
-
import { n as hasExplicitOptions } from "./plugin-registry-
|
|
85
|
+
import { n as hasExplicitOptions } from "./plugin-registry-DdBnvr9h.js";
|
|
86
86
|
import "./daemon-runtime-r19-i0S0.js";
|
|
87
87
|
import "./ensure-local-gateway-VbJtdpui.js";
|
|
88
88
|
import { n as runChannelLoginAll, r as runChannelLogout, t as runChannelLogin } from "./channel-auth-DrJ2FCUT.js";
|
|
89
|
-
import { t as formatCliChannelOptions } from "./channel-options-
|
|
89
|
+
import { t as formatCliChannelOptions } from "./channel-options-zwslyp06.js";
|
|
90
90
|
import { t as buildChannelAccountSnapshot } from "./status-BLjOBDvD.js";
|
|
91
91
|
import { t as parseLogLine } from "./parse-log-line-cWE1HOyo.js";
|
|
92
92
|
import fs from "node:fs/promises";
|
package/dist/cli/daemon-cli.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Legacy shim for pre-tsdown update-cli imports.
|
|
2
|
-
export { registerDaemonCli, runDaemonInstall, runDaemonRestart, runDaemonStart, runDaemonStatus, runDaemonStop, runDaemonUninstall } from "../daemon-cli-
|
|
2
|
+
export { registerDaemonCli, runDaemonInstall, runDaemonRestart, runDaemonStart, runDaemonStatus, runDaemonStop, runDaemonUninstall } from "../daemon-cli-2wt4he6F.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "./pi-embedded-helpers-VJ9hOBTv.js";
|
|
2
|
-
import { ct as loadSKYKOIPlugins } from "./reply-
|
|
2
|
+
import { ct as loadSKYKOIPlugins } from "./reply-mOlXreGp.js";
|
|
3
3
|
import { t as createSubsystemLogger } from "./subsystem-hATE68va.js";
|
|
4
4
|
import "./paths-VdmjGGyc.js";
|
|
5
5
|
import "./theme-C5EwWDWE.js";
|
|
@@ -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-BfuAlPlS.js";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import os from "node:os";
|
|
6
6
|
import fs from "node:fs/promises";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { B as CHANNEL_MESSAGE_ACTION_NAMES, Bn as lookupContextTokens, F as runMessageAction, Ot as registerMemoryCli, R as formatTargetDisplay, it as CHANNEL_TARGET_DESCRIPTION, kt as runMemoryStatus, rt as CHANNEL_TARGETS_DESCRIPTION } from "./reply-
|
|
1
|
+
import { B as CHANNEL_MESSAGE_ACTION_NAMES, Bn as lookupContextTokens, F as runMessageAction, Ot as registerMemoryCli, R as formatTargetDisplay, it as CHANNEL_TARGET_DESCRIPTION, kt as runMemoryStatus, rt as CHANNEL_TARGETS_DESCRIPTION } from "./reply-mOlXreGp.js";
|
|
2
2
|
import { I as normalizeChatChannelId, M as getChatChannelMeta, c as restoreTerminalState, f as danger, k as DEFAULT_CHAT_CHANNEL, p as info, s as defaultRuntime, v as setVerbose } from "./subsystem-hATE68va.js";
|
|
3
3
|
import { g as resolveStateDir, i as isNixMode, m as resolveOAuthDir, o as resolveConfigPath, r as STATE_DIR, t as CONFIG_PATH, u as resolveGatewayPort } from "./paths-VdmjGGyc.js";
|
|
4
4
|
import { n as isRich, r as theme, t as colorize } from "./theme-C5EwWDWE.js";
|
|
@@ -21,32 +21,32 @@ import { n as runCommandWithRuntime } from "./cli-utils-CwUbbnsD.js";
|
|
|
21
21
|
import { n as withProgress } from "./progress-BPDEiFpj.js";
|
|
22
22
|
import { a as ensureWorkspaceAndSessions, c as handleReset, d as openUrl, h as resolveControlUiLinks, i as detectBrowserOpenSupport, l as moveToTrash, m as randomToken, n as applyWizardMetadata, o as formatControlUiSshHint, t as DEFAULT_WORKSPACE, v as waitForGatewayReachable } from "./onboard-helpers-DKhundDe.js";
|
|
23
23
|
import { n as stylePromptMessage, r as stylePromptTitle, t as stylePromptHint } from "./prompt-style-e5zz5JM8.js";
|
|
24
|
-
import { t as createDefaultDeps } from "./deps-
|
|
24
|
+
import { t as createDefaultDeps } from "./deps-0dHAqQPZ.js";
|
|
25
25
|
import { t as assertSupportedRuntime } from "./runtime-guard-C80qkv4W.js";
|
|
26
26
|
import { t as resolveChannelDefaultAccountId } from "./helpers-y1KKH5pe.js";
|
|
27
27
|
import { n as logConfigUpdated, t as formatConfigPath } from "./logging-1Q_KlUsW.js";
|
|
28
28
|
import { t as WizardCancelledError } from "./prompts-yNyvMdpp.js";
|
|
29
29
|
import { t as createClackPrompter } from "./clack-prompter-B9o3eQeW.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-
|
|
31
|
-
import { d as applyAuthChoice, f as applyOpenAIConfig, h as promptAuthChoiceGrouped, m as applyGoogleGeminiModelDefault, p as upsertSharedEnvVar, u as warnIfModelConfigLooksOff } from "./onboard-skills-
|
|
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-
|
|
33
|
-
import { n as setupChannels } from "./onboard-channels-
|
|
34
|
-
import { i as healthCommand } from "./health-format-
|
|
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-jtvwJRjY.js";
|
|
31
|
+
import { d as applyAuthChoice, f as applyOpenAIConfig, h as promptAuthChoiceGrouped, m as applyGoogleGeminiModelDefault, p as upsertSharedEnvVar, u as warnIfModelConfigLooksOff } from "./onboard-skills-D8KGRTxy.js";
|
|
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-CRPmNlXU.js";
|
|
33
|
+
import { n as setupChannels } from "./onboard-channels-CwSayqE8.js";
|
|
34
|
+
import { i as healthCommand } from "./health-format-Cv2SBzMq.js";
|
|
35
35
|
import { t as renderTable } from "./table-B3RHVa0g.js";
|
|
36
36
|
import { t as resolveGatewayService } from "./service-BGkVTESM.js";
|
|
37
37
|
import { r as isSystemdUserServiceAvailable } from "./systemd-BzTSelz8.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-BfuAlPlS.js";
|
|
39
39
|
import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-CIxOsvvC.js";
|
|
40
40
|
import { t as formatHelpExamples } from "./help-format-BVBm9rU4.js";
|
|
41
41
|
import { t as adminUnlockCommand } from "./admin-unlock-Dr4FqRVP.js";
|
|
42
|
-
import { a as createOutboundSendDeps, n as resolveSessionKeyForRequest, t as koiCommand } from "./koi-
|
|
43
|
-
import { n as hasExplicitOptions, t as ensurePluginRegistryLoaded } from "./plugin-registry-
|
|
42
|
+
import { a as createOutboundSendDeps, n as resolveSessionKeyForRequest, t as koiCommand } from "./koi-CwOIbGaZ.js";
|
|
43
|
+
import { n as hasExplicitOptions, t as ensurePluginRegistryLoaded } from "./plugin-registry-DdBnvr9h.js";
|
|
44
44
|
import { n as parsePositiveIntOrUndefined, t as collectOption } from "./helpers-BwzKU4J1.js";
|
|
45
|
-
import { i as CONFIGURE_WIZARD_SECTIONS, n as configureCommand, r as configureCommandWithSections } from "./configure-
|
|
45
|
+
import { i as CONFIGURE_WIZARD_SECTIONS, n as configureCommand, r as configureCommandWithSections } from "./configure-DFrODS29.js";
|
|
46
46
|
import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, r as isGatewayDaemonRuntime, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-r19-i0S0.js";
|
|
47
47
|
import { n as ensureSystemdUserLingerNonInteractive } from "./systemd-linger-Be49_NdF.js";
|
|
48
48
|
import { t as loginCommand } from "./login-C71-L2cR.js";
|
|
49
|
-
import { n as loadAndMaybeMigrateDoctorConfig, t as doctorCommand } from "./doctor-
|
|
49
|
+
import { n as loadAndMaybeMigrateDoctorConfig, t as doctorCommand } from "./doctor-Cjp7w46N.js";
|
|
50
50
|
import { fileURLToPath } from "node:url";
|
|
51
51
|
import fs from "node:fs";
|
|
52
52
|
import path from "node:path";
|
|
@@ -2797,7 +2797,7 @@ async function loadValidConfig() {
|
|
|
2797
2797
|
}
|
|
2798
2798
|
function registerConfigCli(program) {
|
|
2799
2799
|
const cmd = program.command("config").description("Config helpers (get/set/unset). Run without subcommand for the wizard.").addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/config", "docs.skykoi.com/cli/config")}\n`).option("--section <section>", "Configure wizard sections (repeatable). Use with no subcommand.", (value, previous) => [...previous, value], []).action(async (opts) => {
|
|
2800
|
-
const { CONFIGURE_WIZARD_SECTIONS, configureCommand, configureCommandWithSections } = await import("./configure-
|
|
2800
|
+
const { CONFIGURE_WIZARD_SECTIONS, configureCommand, configureCommandWithSections } = await import("./configure-DFrODS29.js").then((n) => n.t);
|
|
2801
2801
|
const sections = Array.isArray(opts.section) ? opts.section.map((value) => typeof value === "string" ? value.trim() : "").filter(Boolean) : [];
|
|
2802
2802
|
if (sections.length === 0) {
|
|
2803
2803
|
await configureCommand(defaultRuntime);
|
|
@@ -14,9 +14,9 @@ import { n as logConfigUpdated } from "./logging-1Q_KlUsW.js";
|
|
|
14
14
|
import { t as note$1 } from "./note-DRoVRuAi.js";
|
|
15
15
|
import { t as WizardCancelledError } from "./prompts-yNyvMdpp.js";
|
|
16
16
|
import { t as createClackPrompter } from "./clack-prompter-B9o3eQeW.js";
|
|
17
|
-
import { a as applyModelFallbacksFromSelection, c as promptModelAllowlist, d as applyAuthChoice, h as promptAuthChoiceGrouped, i as applyModelAllowlist, l as resolvePreferredProviderForAuthChoice, o as applyPrimaryModel, r as promptRemoteGatewayConfig, s as promptDefaultModel, t as setupSkills } from "./onboard-skills-
|
|
18
|
-
import { n as setupChannels, t as noteChannelStatus } from "./onboard-channels-
|
|
19
|
-
import { i as healthCommand, t as formatHealthCheckFailure } from "./health-format-
|
|
17
|
+
import { a as applyModelFallbacksFromSelection, c as promptModelAllowlist, d as applyAuthChoice, h as promptAuthChoiceGrouped, i as applyModelAllowlist, l as resolvePreferredProviderForAuthChoice, o as applyPrimaryModel, r as promptRemoteGatewayConfig, s as promptDefaultModel, t as setupSkills } from "./onboard-skills-D8KGRTxy.js";
|
|
18
|
+
import { n as setupChannels, t as noteChannelStatus } from "./onboard-channels-CwSayqE8.js";
|
|
19
|
+
import { i as healthCommand, t as formatHealthCheckFailure } from "./health-format-Cv2SBzMq.js";
|
|
20
20
|
import { t as resolveGatewayService } from "./service-BGkVTESM.js";
|
|
21
21
|
import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-B0N-n2rD.js";
|
|
22
22
|
import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-r19-i0S0.js";
|
|
@@ -15,7 +15,7 @@ import { n as withProgress } from "./progress-BPDEiFpj.js";
|
|
|
15
15
|
import { h as resolveControlUiLinks } from "./onboard-helpers-DKhundDe.js";
|
|
16
16
|
import { n as isWSLEnv, t as isWSL } from "./wsl-DiiAe4Ci.js";
|
|
17
17
|
import { d as resolveGatewaySystemdServiceName, l as resolveGatewayLaunchAgentLabel } from "./constants-BezzOOYJ.js";
|
|
18
|
-
import { t as createDefaultDeps } from "./deps-
|
|
18
|
+
import { t as createDefaultDeps } from "./deps-0dHAqQPZ.js";
|
|
19
19
|
import { o as resolveGatewayLogPaths, t as resolveGatewayService } from "./service-BGkVTESM.js";
|
|
20
20
|
import { r as isSystemdUserServiceAvailable } from "./systemd-BzTSelz8.js";
|
|
21
21
|
import { t as readLastGatewayErrorLine } from "./diagnostics-CFV2YxpG.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Ht as sendMessageTelegram, Ut as sendMessageDiscord, ht as sendMessageIMessage, nn as sendMessageWhatsApp, rn as sendMessageSlack } from "./reply-
|
|
1
|
+
import { Ht as sendMessageTelegram, Ut as sendMessageDiscord, ht as sendMessageIMessage, nn as sendMessageWhatsApp, rn as sendMessageSlack } from "./reply-mOlXreGp.js";
|
|
2
2
|
import { b as sendMessageSignal } from "./deliver-DJbxwsAM.js";
|
|
3
3
|
|
|
4
4
|
//#region src/cli/deps.ts
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Jn as loadModelCatalog, ct as loadSKYKOIPlugins } from "./reply-
|
|
1
|
+
import { Jn as loadModelCatalog, ct as loadSKYKOIPlugins } from "./reply-mOlXreGp.js";
|
|
2
2
|
import { s as defaultRuntime, w as getResolvedLoggerSettings } from "./subsystem-hATE68va.js";
|
|
3
3
|
import { d as resolveIsNixMode, f as resolveLegacyStateDirs, g as resolveStateDir, m as resolveOAuthDir, p as resolveNewStateDir, t as CONFIG_PATH, u as resolveGatewayPort } from "./paths-VdmjGGyc.js";
|
|
4
4
|
import { a as buildKoiMainSessionKey, l as normalizeKoiId, r as DEFAULT_MAIN_KEY, t as DEFAULT_ACCOUNT_ID } from "./session-key-B2OXLVi_.js";
|
|
@@ -26,7 +26,7 @@ import { t as resolveChannelDefaultAccountId } from "./helpers-y1KKH5pe.js";
|
|
|
26
26
|
import { n as logConfigUpdated } from "./logging-1Q_KlUsW.js";
|
|
27
27
|
import { t as note$1 } from "./note-DRoVRuAi.js";
|
|
28
28
|
import { t as applyPluginAutoEnable } from "./plugin-auto-enable-Cg3LRidd.js";
|
|
29
|
-
import { i as healthCommand, t as formatHealthCheckFailure } from "./health-format-
|
|
29
|
+
import { i as healthCommand, t as formatHealthCheckFailure } from "./health-format-Cv2SBzMq.js";
|
|
30
30
|
import { t as runGatewayUpdate } from "./update-runner-odTAl-uh.js";
|
|
31
31
|
import { i as resolveGatewayAuth } from "./auth-Vh115fQN.js";
|
|
32
32
|
import { t as buildWorkspaceSkillStatus } from "./skills-status-DakSfN8r.js";
|
|
@@ -34,7 +34,7 @@ import { a as repairLaunchAgentBootstrap, i as launchAgentPlistExists, n as isLa
|
|
|
34
34
|
import { r as isSystemdUserServiceAvailable } from "./systemd-BzTSelz8.js";
|
|
35
35
|
import { t as readLastGatewayErrorLine } from "./diagnostics-CFV2YxpG.js";
|
|
36
36
|
import { t as collectChannelStatusIssues } from "./channels-status-issues-BLygTpUh.js";
|
|
37
|
-
import { n as doctorShellCompletion } from "./doctor-completion-
|
|
37
|
+
import { n as doctorShellCompletion } from "./doctor-completion-Cu9-JAii.js";
|
|
38
38
|
import { n as resolveControlUiDistIndexHealth, r as resolveControlUiDistIndexPathForRoot } from "./control-ui-assets-B0N-n2rD.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-r19-i0S0.js";
|
|
40
40
|
import { t as ensureSystemdUserLingerInteractive } from "./systemd-linger-Be49_NdF.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-DRoVRuAi.js";
|
|
5
5
|
import { c as compareSemverStrings, s as checkUpdateStatus } from "./update-runner-odTAl-uh.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-Rdq7S5KE.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-ByOnbm2b.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
|
});
|
package/dist/extension-api.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "./pi-embedded-helpers-VJ9hOBTv.js";
|
|
2
|
-
import { c as runEmbeddedPiKoi, lr as resolveKoiTimeoutMs, sn as resolveKoiIdentity } from "./reply-
|
|
2
|
+
import { c as runEmbeddedPiKoi, lr as resolveKoiTimeoutMs, sn as resolveKoiIdentity } from "./reply-mOlXreGp.js";
|
|
3
3
|
import "./subsystem-hATE68va.js";
|
|
4
4
|
import "./paths-VdmjGGyc.js";
|
|
5
5
|
import "./theme-C5EwWDWE.js";
|