@xopcai/xopc 0.0.275 → 0.0.276
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/browser-ext/manifest.json +1 -1
- package/dist/extensions/feishu/src/outbound/media-load.js +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-Dx6x7MXq.js → agent-avatar-dicebear-sj_1IC5H.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-defaults-settings-panel-BuxTpjkf.js → agent-defaults-settings-panel-B5MRLEy8.js} +1 -1
- package/dist/gateway/static/root/assets/{agents-_f9HEOol.js → agents-CIzev0Qj.js} +1 -1
- package/dist/gateway/static/root/assets/{app-management-settings-panel-BYKWXcVl.js → app-management-settings-panel-DY3Vwxjq.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-BmhSJc4X.js → appearance-settings-BeXvF-dZ.js} +1 -1
- package/dist/gateway/static/root/assets/{apps-page-DYTnK9lL.js → apps-page-Ch_9Ffgk.js} +1 -1
- package/dist/gateway/static/root/assets/{archive-plugin-BY6ncIeE.js → archive-plugin-BSgaIIGE.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-B6cw8KtO.js → attachment-load-CGNt02hP.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-page-D1WwsSf3.js → automations-page-DoafJiVA.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-workspace-CjF56MI_.js → automations-workspace-MACr99IO.js} +1 -1
- package/dist/gateway/static/root/assets/{binary-plugins-CC-wYm0K.js → binary-plugins-BsAL26Aq.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-D8rh9KNe.js → block-editor-BxB7m8aI.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-automations-page-CMrffyct.js → browser-automations-page-BNsO-Ip2.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-settings-page-1onvP1Se.js → browser-settings-page-Nvdoi0B1.js} +1 -1
- package/dist/gateway/static/root/assets/{capabilities-settings-panel-C9ZSJxjr.js → capabilities-settings-panel-BluLJq5I.js} +1 -1
- package/dist/gateway/static/root/assets/{channels-settings-CvLTnI99.js → channels-settings-DYxxhcjb.js} +1 -1
- package/dist/gateway/static/root/assets/{chat-terminal-dock-F_dUdZ8l.js → chat-terminal-dock-ZCFwco1W.js} +1 -1
- package/dist/gateway/static/root/assets/{connectors-page-D7NHV8B2.js → connectors-page-Bpcp8UyE.js} +1 -1
- package/dist/gateway/static/root/assets/{date-picker-MHuajwQ-.js → date-picker-CpxFfgpg.js} +1 -1
- package/dist/gateway/static/root/assets/{dependency-picker-BcMJJI9X.js → dependency-picker-eCIGAfHa.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-DlNm_7H0.js → desktop-pet-_MSZvIDO.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-settings-BI1JQMnE.js → desktop-pet-settings-feBnJWkV.js} +1 -1
- package/dist/gateway/static/root/assets/{device-pairing-wizard-Cp5jO5B_.js → device-pairing-wizard-D_fB0fml.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-DZr0GkkA.js → extension-debug-page-CotBlxJ-.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-QsHoQ6VX.js → extension-page-CFBmQ7U3.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-I2YX4Tzb.js → extension-settings-page-Cd1lfh8z.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-settings-GwfQu8rN.js → gateway-settings-BH35C8RI.js} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-settings-D-hVYXzL.js → heartbeat-settings-DRG0u1ON.js} +1 -1
- package/dist/gateway/static/root/assets/{home-page-SEW_0k8Q.js → home-page-BlZk-aD4.js} +1 -1
- package/dist/gateway/static/root/assets/{index-DfZZLrWp.js → index-CfQor-TM.js} +7 -7
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-D_I-hiG2.js → keyboard-shortcuts-settings-BLHsdFIQ.js} +1 -1
- package/dist/gateway/static/root/assets/{local-app-workbench-page-BcY7wIHs.js → local-app-workbench-page-DJd71FlC.js} +1 -1
- package/dist/gateway/static/root/assets/{local-apps-page-DniZuXJJ.js → local-apps-page-BjAj1xhq.js} +1 -1
- package/dist/gateway/static/root/assets/{logs-page-DIiOMrJ_.js → logs-page-5MWeZ6Ae.js} +1 -1
- package/dist/gateway/static/root/assets/{management-settings-BPw41YX6.js → management-settings-CPHxDaOw.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-BoP3LSQz.js → media-plugins-BUOzcXCL.js} +1 -1
- package/dist/gateway/static/root/assets/{note-detail-panel-BI2xr54R.js → note-detail-panel-Bch98ut3.js} +3 -3
- package/dist/gateway/static/root/assets/{notes-page-CM7Ns8i1.js → notes-page-CWO5dQKN.js} +1 -1
- package/dist/gateway/static/root/assets/{page-tabs-B21WfV92.js → page-tabs-BgEYFhqS.js} +1 -1
- package/dist/gateway/static/root/assets/{preview-open-alternatives-BZoDpPqV.js → preview-open-alternatives-C-pQIx6W.js} +1 -1
- package/dist/gateway/static/root/assets/{proactive-card-Bw9CbzUX.js → proactive-card-DfjMVJUW.js} +1 -1
- package/dist/gateway/static/root/assets/{proactive-page-Czw_CEDB.js → proactive-page-BGVcVsbd.js} +1 -1
- package/dist/gateway/static/root/assets/{project-detail-page-jOECabbf.js → project-detail-page-DZFVirjV.js} +1 -1
- package/dist/gateway/static/root/assets/{projects-page-Ck9j5q0x.js → projects-page-B2g6inq-.js} +1 -1
- package/dist/gateway/static/root/assets/{remote-access-hub-2xcpaLTC.js → remote-access-hub-CbkUOkQY.js} +1 -1
- package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-Bz5gIRjy.js → runtime-tools-settings-panel-DkAjFJ-9.js} +1 -1
- package/dist/gateway/static/root/assets/{schema-form-CqM0ntNm.js → schema-form-BpDcuSsl.js} +1 -1
- package/dist/gateway/static/root/assets/{sessions-page-CE9MK60k.js → sessions-page--7-w-0WS.js} +1 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-BvZrH_sp.js +1 -0
- package/dist/gateway/static/root/assets/{settings-form-section-LqcDYJ2m.js → settings-form-section-RElRijJw.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-BpvBmheO.js → settings-page-CaixunoA.js} +1 -1
- package/dist/gateway/static/root/assets/{setup-status-panel-CYuqNzWH.js → setup-status-panel-Ul06Y5YX.js} +1 -1
- package/dist/gateway/static/root/assets/{share-preview-page-F3qhAryJ.js → share-preview-page-CC-bFOTf.js} +1 -1
- package/dist/gateway/static/root/assets/{shares-settings-B4wSoQM3.js → shares-settings-DwV2Wh7S.js} +1 -1
- package/dist/gateway/static/root/assets/{skill-reload-api-C3LD7fkR.js → skill-reload-api-CcOtxf53.js} +1 -1
- package/dist/gateway/static/root/assets/{skills-page-D9fI548d.js → skills-page-DmRvRxtY.js} +1 -1
- package/dist/gateway/static/root/assets/{skills-page.utils-DZNmyYqU.js → skills-page.utils-CT0-daZD.js} +1 -1
- package/dist/gateway/static/root/assets/{system-settings-panel-CMsmFOhV.js → system-settings-panel-DRIJ5mXq.js} +1 -1
- package/dist/gateway/static/root/assets/{task-detail-page-DRwTJ8E0.js → task-detail-page-BQjLHqSk.js} +1 -1
- package/dist/gateway/static/root/assets/{tunnel-api-DGaqXwql.js → tunnel-api-IvWcgZdD.js} +1 -1
- package/dist/gateway/static/root/assets/{use-autosave-bXCl0Y0j.js → use-autosave-Cq4--C1i.js} +1 -1
- package/dist/gateway/static/root/assets/{user-model-page-B3RjDSri.js → user-model-page-hwc5-nqV.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-api-key-field-Cx9rl7mP.js → voice-api-key-field-CbJ6tKGI.js} +1 -1
- package/dist/gateway/static/root/assets/{work-discovery-overlay-ywJpaqKp.js → work-discovery-overlay-BG2pmXL3.js} +1 -1
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-DyGukxOL.js → workflow-run-setup-panel-vw1229Fh.js} +1 -1
- package/dist/gateway/static/root/assets/{workflows-page-CifIqO2B.js → workflows-page-DZWpJHDr.js} +1 -1
- package/dist/gateway/static/root/index.html +1 -1
- package/dist/package.js +1 -1
- package/dist/src/browser/providers/browser-ext-install.js +78 -11
- package/dist/src/cli/commands/channels.js +1 -1
- package/dist/src/cli/commands/connectors.js +1 -1
- package/dist/src/cli/commands/extension-marketplace.js +2 -2
- package/dist/src/cli/commands/models.js +1 -1
- package/dist/src/cli/commands/onboard.js +2 -2
- package/dist/src/extensions/sdk/index.js +1 -1
- package/dist/src/extensions/update.js +1 -1
- package/dist/src/gateway/heartbeat/service.js +1 -1
- package/dist/src/gateway/hono/routes/auth-registry-extensions.js +1 -1
- package/dist/src/gateway/hono/routes/voice.js +1 -1
- package/dist/src/gateway/service/config-coordinator.js +1 -1
- package/dist/src/gateway/service.js +3 -3
- package/dist/src/heartbeat/index.js +1 -1
- package/dist/src/infra/update-runner.js +1 -1
- package/dist/src/tui/backends/embedded-backend.js +1 -1
- package/package.json +2 -2
- package/dist/gateway/static/root/assets/settings-advanced-gate-D0grhQan.js +0 -1
|
@@ -11,7 +11,7 @@ import { resolvePackageRoot } from "../../infra/update-check.js";
|
|
|
11
11
|
import { dirname, join } from "node:path";
|
|
12
12
|
import { chmodSync, existsSync, mkdirSync, readFileSync, readdirSync, realpathSync, renameSync, rmSync, statSync, writeFileSync } from "node:fs";
|
|
13
13
|
import { fileURLToPath } from "node:url";
|
|
14
|
-
import { spawn } from "node:child_process";
|
|
14
|
+
import { execFileSync, spawn } from "node:child_process";
|
|
15
15
|
import { createHash } from "node:crypto";
|
|
16
16
|
import { readFile, readdir, rm } from "node:fs/promises";
|
|
17
17
|
import AdmZip from "adm-zip";
|
|
@@ -320,6 +320,42 @@ async function ensureBrowserExtensionArtifacts(opts) {
|
|
|
320
320
|
function shellQuote(value) {
|
|
321
321
|
return `'${value.replaceAll("'", "'\\''")}'`;
|
|
322
322
|
}
|
|
323
|
+
const WINDOWS_NATIVE_HOST_KEYS = [
|
|
324
|
+
"Google\\Chrome",
|
|
325
|
+
"Chromium",
|
|
326
|
+
"Microsoft\\Edge",
|
|
327
|
+
"BraveSoftware\\Brave-Browser"
|
|
328
|
+
].map((browser) => `HKCU\\Software\\${browser}\\NativeMessagingHosts\\${BROWSER_NATIVE_HOST_NAME}`);
|
|
329
|
+
function runNativeHostRegistry(args) {
|
|
330
|
+
return execFileSync("reg.exe", args, {
|
|
331
|
+
encoding: "utf8",
|
|
332
|
+
windowsHide: true,
|
|
333
|
+
stdio: [
|
|
334
|
+
"ignore",
|
|
335
|
+
"pipe",
|
|
336
|
+
"pipe"
|
|
337
|
+
]
|
|
338
|
+
});
|
|
339
|
+
}
|
|
340
|
+
function windowsRegisteredNativeManifests() {
|
|
341
|
+
return [...new Set(WINDOWS_NATIVE_HOST_KEYS.flatMap((key) => {
|
|
342
|
+
try {
|
|
343
|
+
const path = runNativeHostRegistry([
|
|
344
|
+
"query",
|
|
345
|
+
key,
|
|
346
|
+
"/ve",
|
|
347
|
+
"/reg:32"
|
|
348
|
+
]).match(/REG_SZ\s+([^\r\n]+)/)?.[1]?.trim();
|
|
349
|
+
return path ? [path] : [];
|
|
350
|
+
} catch {
|
|
351
|
+
return [];
|
|
352
|
+
}
|
|
353
|
+
}))];
|
|
354
|
+
}
|
|
355
|
+
function batchQuote(value) {
|
|
356
|
+
if (/["\r\n\0]/.test(value)) throw new Error("Invalid path in Windows native host launcher");
|
|
357
|
+
return `"${value.replaceAll("%", "%%")}"`;
|
|
358
|
+
}
|
|
323
359
|
function browserNativeManifestDirectories(platform = process.platform, home = process.env.HOME || process.env.USERPROFILE || "") {
|
|
324
360
|
if (!home) return [];
|
|
325
361
|
if (platform === "darwin") return [
|
|
@@ -340,12 +376,12 @@ function browserNativeManifestDirectories(platform = process.platform, home = pr
|
|
|
340
376
|
}
|
|
341
377
|
function browserNativeHostDoctor(platform = process.platform, home = process.env.HOME || process.env.USERPROFILE || "") {
|
|
342
378
|
const directories = browserNativeManifestDirectories(platform, home);
|
|
343
|
-
if (directories.length === 0) return {
|
|
379
|
+
if (platform !== "win32" && directories.length === 0) return {
|
|
344
380
|
installed: false,
|
|
345
381
|
manifestPaths: [],
|
|
346
|
-
reason: "Automatic local Gateway discovery is supported on macOS and Linux"
|
|
382
|
+
reason: "Automatic local Gateway discovery is supported on Windows, macOS and Linux"
|
|
347
383
|
};
|
|
348
|
-
const manifestPaths = directories.map((directory) => join(directory, `${BROWSER_NATIVE_HOST_NAME}.json`)).filter((manifestPath) => {
|
|
384
|
+
const manifestPaths = (platform === "win32" ? windowsRegisteredNativeManifests() : directories.map((directory) => join(directory, `${BROWSER_NATIVE_HOST_NAME}.json`))).filter((manifestPath) => {
|
|
349
385
|
try {
|
|
350
386
|
const manifest = JSON.parse(readFileSync(manifestPath, "utf8"));
|
|
351
387
|
return manifest.name === "ai.xopc.browser" && typeof manifest.path === "string" && existsSync(manifest.path) && Array.isArray(manifest.allowed_origins) && manifest.allowed_origins.includes(`chrome-extension://gopbfhaojnnhiheiikblejnpgmfmkmgd/`);
|
|
@@ -361,11 +397,12 @@ function browserNativeHostDoctor(platform = process.platform, home = process.env
|
|
|
361
397
|
}
|
|
362
398
|
/** Install the local-only bootstrap host used to discover and pair with a Gateway. */
|
|
363
399
|
async function installBrowserNativeMessagingHost(opts) {
|
|
364
|
-
const
|
|
365
|
-
|
|
400
|
+
const platform = opts?.platform ?? process.platform;
|
|
401
|
+
const directories = browserNativeManifestDirectories(platform, opts?.home);
|
|
402
|
+
if (platform !== "win32" && directories.length === 0) return {
|
|
366
403
|
installed: false,
|
|
367
404
|
manifestPaths: [],
|
|
368
|
-
reason: "Automatic local Gateway discovery is supported on macOS and Linux"
|
|
405
|
+
reason: "Automatic local Gateway discovery is supported on Windows, macOS and Linux"
|
|
369
406
|
};
|
|
370
407
|
const cliPath = opts?.cliPath ?? process.argv[1];
|
|
371
408
|
if (!cliPath) throw new Error("Unable to resolve the xopc CLI entry point");
|
|
@@ -381,12 +418,23 @@ async function installBrowserNativeMessagingHost(opts) {
|
|
|
381
418
|
if (!existsSync(tsxPath)) throw new Error("Unable to install the browser native host in development: the tsx CLI entry was not found");
|
|
382
419
|
executableArgs = [realpathSync(tsxPath), ...executableArgs];
|
|
383
420
|
}
|
|
384
|
-
const hostPath = join((opts?.cacheDir?.trim() ? assertCacheDir(opts.cacheDir) : resolveBinDir()) || resolveBinDir(), "browser-native-host");
|
|
421
|
+
const hostPath = join((opts?.cacheDir?.trim() ? assertCacheDir(opts.cacheDir) : resolveBinDir()) || resolveBinDir(), platform === "win32" ? "browser-native-host.cmd" : "browser-native-host");
|
|
385
422
|
mkdirSync(dirname(hostPath), { recursive: true });
|
|
386
423
|
const stateDir = opts?.stateDir ?? resolveStateDir();
|
|
387
424
|
const configPath = opts?.configPath ?? resolveConfigPath();
|
|
388
|
-
await writeTextAtomic(hostPath,
|
|
389
|
-
|
|
425
|
+
await writeTextAtomic(hostPath, platform === "win32" ? [
|
|
426
|
+
"@echo off",
|
|
427
|
+
"setlocal DisableDelayedExpansion",
|
|
428
|
+
"chcp 65001 >nul",
|
|
429
|
+
"set \"ELECTRON_RUN_AS_NODE=1\"",
|
|
430
|
+
`set ${batchQuote(`XOPC_STATE_DIR=${stateDir}`)}`,
|
|
431
|
+
`set ${batchQuote(`XOPC_CONFIG_PATH=${configPath}`)}`,
|
|
432
|
+
"set \"XOPC_LOG_CONSOLE=false\"",
|
|
433
|
+
`${batchQuote(executablePath)} ${executableArgs.map(batchQuote).join(" ")}`,
|
|
434
|
+
"exit /b %errorlevel%",
|
|
435
|
+
""
|
|
436
|
+
].join("\r\n") : `#!/bin/sh\nexec env ELECTRON_RUN_AS_NODE=1 XOPC_STATE_DIR=${shellQuote(stateDir)} XOPC_CONFIG_PATH=${shellQuote(configPath)} XOPC_LOG_CONSOLE=false ${shellQuote(executablePath)} ${executableArgs.map(shellQuote).join(" ")}\n`);
|
|
437
|
+
if (platform !== "win32") chmodSync(hostPath, 493);
|
|
390
438
|
const manifest = JSON.stringify({
|
|
391
439
|
name: BROWSER_NATIVE_HOST_NAME,
|
|
392
440
|
description: "xopc local browser pairing bootstrap",
|
|
@@ -395,12 +443,31 @@ async function installBrowserNativeMessagingHost(opts) {
|
|
|
395
443
|
allowed_origins: [`chrome-extension://${BROWSER_EXTENSION_ID}/`]
|
|
396
444
|
}, null, 2);
|
|
397
445
|
const manifestPaths = [];
|
|
398
|
-
for (const directory of directories) {
|
|
446
|
+
for (const directory of platform === "win32" ? [dirname(hostPath)] : directories) {
|
|
399
447
|
mkdirSync(directory, { recursive: true });
|
|
400
448
|
const manifestPath = join(directory, `${BROWSER_NATIVE_HOST_NAME}.json`);
|
|
401
449
|
await writeTextAtomic(manifestPath, manifest);
|
|
402
450
|
manifestPaths.push(manifestPath);
|
|
403
451
|
}
|
|
452
|
+
if (platform === "win32") try {
|
|
453
|
+
for (const key of WINDOWS_NATIVE_HOST_KEYS) runNativeHostRegistry([
|
|
454
|
+
"add",
|
|
455
|
+
key,
|
|
456
|
+
"/ve",
|
|
457
|
+
"/t",
|
|
458
|
+
"REG_SZ",
|
|
459
|
+
"/d",
|
|
460
|
+
manifestPaths[0],
|
|
461
|
+
"/f",
|
|
462
|
+
"/reg:32"
|
|
463
|
+
]);
|
|
464
|
+
} catch (error) {
|
|
465
|
+
return {
|
|
466
|
+
installed: false,
|
|
467
|
+
manifestPaths,
|
|
468
|
+
reason: `Windows native host registration failed: ${error instanceof Error ? error.message : String(error)}`
|
|
469
|
+
};
|
|
470
|
+
}
|
|
404
471
|
return {
|
|
405
472
|
installed: true,
|
|
406
473
|
manifestPaths
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { buildChannelCatalogForConfig, init_channel_catalog_service } from "../../channels/catalog/channel-catalog-service.js";
|
|
2
2
|
import { init_loader, loadConfig, saveConfig } from "../../config/loader.js";
|
|
3
|
+
import { formatExamples, register } from "../registry.js";
|
|
3
4
|
import { listChannelPairingState } from "../../channels/pairing/pairing-service.js";
|
|
4
5
|
import { approveChannelPairingFromCli } from "../../channels/pairing/approve-cli.js";
|
|
5
|
-
import { formatExamples, register } from "../registry.js";
|
|
6
6
|
import { colors } from "../utils/colors.js";
|
|
7
7
|
import { Command } from "commander";
|
|
8
8
|
//#region src/cli/commands/channels.ts
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { init_loader, loadConfig, saveConfig } from "../../config/loader.js";
|
|
2
2
|
import { getStoreConnectorInstallPlan, installStoreConnector, listStoreConnectors } from "../../capabilities/store-connector.js";
|
|
3
3
|
import { register } from "../registry.js";
|
|
4
|
-
import { confirm } from "@inquirer/prompts";
|
|
5
4
|
import { Command } from "commander";
|
|
5
|
+
import { confirm } from "@inquirer/prompts";
|
|
6
6
|
//#region src/cli/commands/connectors.ts
|
|
7
7
|
init_loader();
|
|
8
8
|
function parsePairs(values, option) {
|
|
@@ -3,9 +3,9 @@ import { init_loader, loadConfig } from "../../config/loader.js";
|
|
|
3
3
|
import { downloadExtensionStoreZipBuffer, resolveExtensionZipDownloadUrl, resolveExtensionsStoreBaseUrl, verifyStoreArtifactSha256 } from "../../agent/skills/marketplace/adapters/store/store-api-client.js";
|
|
4
4
|
import { getContextWithOpts } from "../context.js";
|
|
5
5
|
import { getExtensionLockfileManager } from "../../extensions/lockfile.js";
|
|
6
|
+
import { fetchRegistry, findExtension, getExtensionMarketplaceStoreBaseUrl, listExtensions, searchExtensions } from "../../extensions/marketplace.js";
|
|
6
7
|
import { installFromLocal, installFromNpm, peekExtensionManifestFromStoreZip } from "../../extensions/install.js";
|
|
7
8
|
import { commitStagedExtensionInstall, finalizeStagedExtensionInstall, rollbackStagedExtensionInstall, stageExtensionStoreZip } from "../../extensions/install-transaction.js";
|
|
8
|
-
import { fetchRegistry, findExtension, getExtensionMarketplaceStoreBaseUrl, listExtensions, searchExtensions } from "../../extensions/marketplace.js";
|
|
9
9
|
import { colors } from "../utils/colors.js";
|
|
10
10
|
import { validateExtensionPackageDirectory } from "./extension-pack.js";
|
|
11
11
|
import { join, resolve } from "node:path";
|
|
@@ -13,8 +13,8 @@ import { existsSync, readFileSync, rmSync, statSync } from "node:fs";
|
|
|
13
13
|
import { execSync } from "node:child_process";
|
|
14
14
|
import { createHash } from "node:crypto";
|
|
15
15
|
import semver from "semver";
|
|
16
|
-
import { confirm } from "@inquirer/prompts";
|
|
17
16
|
import { Command } from "commander";
|
|
17
|
+
import { confirm } from "@inquirer/prompts";
|
|
18
18
|
//#region src/cli/commands/extension-marketplace.ts
|
|
19
19
|
init_loader();
|
|
20
20
|
init_paths();
|
|
@@ -9,8 +9,8 @@ import { prepareUpdateGlobalDefaults } from "../../gateway/global-defaults-admin
|
|
|
9
9
|
import { disconnectProvider } from "../../providers/provider-disconnect.js";
|
|
10
10
|
import { colors } from "../utils/colors.js";
|
|
11
11
|
import { runCliOAuthLogin } from "../utils/oauth-login.js";
|
|
12
|
-
import { input } from "@inquirer/prompts";
|
|
13
12
|
import { Command } from "commander";
|
|
13
|
+
import { input } from "@inquirer/prompts";
|
|
14
14
|
//#region src/cli/commands/models.ts
|
|
15
15
|
init_credentials();
|
|
16
16
|
init_schema();
|
|
@@ -4,14 +4,14 @@ import { saveConfig } from "../../config/loader.js";
|
|
|
4
4
|
import { resolveGatewayLocalClientHost } from "../../config/gateway-bind.js";
|
|
5
5
|
import { formatExamples, register } from "../registry.js";
|
|
6
6
|
import "../../config/index.js";
|
|
7
|
-
import { colors } from "../utils/colors.js";
|
|
8
7
|
import { provisionEagerRuntimes } from "../../runtime-tools/bootstrap.js";
|
|
8
|
+
import { colors } from "../utils/colors.js";
|
|
9
9
|
import { initWorkspace } from "../utils/init-workspace.js";
|
|
10
10
|
import { setupModel } from "./onboard/model.js";
|
|
11
11
|
import { getChannelConfigurators } from "./onboard/channels/registry.js";
|
|
12
12
|
import { setupChannels } from "./onboard/channels/index.js";
|
|
13
|
-
import { select } from "@inquirer/prompts";
|
|
14
13
|
import { Command } from "commander";
|
|
14
|
+
import { select } from "@inquirer/prompts";
|
|
15
15
|
//#region src/cli/commands/onboard.ts
|
|
16
16
|
init_schema();
|
|
17
17
|
init_paths_state();
|
|
@@ -7,8 +7,8 @@ import { SlotRegistry, getSlotRegistry, registerSlotType } from "../slots.js";
|
|
|
7
7
|
import { ExtensionDiagnostics, ExtensionLoaderCacheImpl, getExtensionCache, getExtensionDiagnostics } from "../diagnostics.js";
|
|
8
8
|
import "../loader.js";
|
|
9
9
|
import { ExtensionHookRunner, createHookContext, isHookEvent } from "../hooks.js";
|
|
10
|
-
import { defineChannelPluginEntry } from "./channel-entry.js";
|
|
11
10
|
import { registerExtensionCliProgram } from "./channel-helpers.js";
|
|
11
|
+
import { defineChannelPluginEntry } from "./channel-entry.js";
|
|
12
12
|
import { lazyFunction, lazyModule } from "./lazy.js";
|
|
13
13
|
import { createMockExtensionApi, createTestGateway } from "./testing.js";
|
|
14
14
|
//#region src/extensions/sdk/index.ts
|
|
@@ -4,8 +4,8 @@ import { init_paths, resolveBundledExtensionsDir, resolveExtensionsDir } from ".
|
|
|
4
4
|
import { init_loader, loadConfig } from "../config/loader.js";
|
|
5
5
|
import { downloadExtensionStoreZipBuffer, resolveExtensionZipDownloadUrl, resolveExtensionsStoreBaseUrl, verifyStoreArtifactSha256 } from "../agent/skills/marketplace/adapters/store/store-api-client.js";
|
|
6
6
|
import { getExtensionLockfileManager } from "./lockfile.js";
|
|
7
|
-
import { installExtensionFromStoreZip, installFromNpm } from "./install.js";
|
|
8
7
|
import { findExtension } from "./marketplace.js";
|
|
8
|
+
import { installExtensionFromStoreZip, installFromNpm } from "./install.js";
|
|
9
9
|
import { join } from "node:path";
|
|
10
10
|
import { existsSync, readFileSync, readdirSync, rmSync } from "node:fs";
|
|
11
11
|
import semver from "semver";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { createLogger } from "../../utils/logger/index.js";
|
|
2
2
|
import { init_logger } from "../../utils/logger.js";
|
|
3
3
|
import { shouldSilence, stripHeartbeatToken } from "../../heartbeat/tokens.js";
|
|
4
|
+
import { appendCronEventLines } from "../../heartbeat/event-prompt.js";
|
|
4
5
|
import { isWithinActiveHours } from "../../heartbeat/active-hours.js";
|
|
5
6
|
import { isHeartbeatContentEmpty } from "../../heartbeat/content-check.js";
|
|
6
|
-
import { appendCronEventLines } from "../../heartbeat/event-prompt.js";
|
|
7
7
|
import { createHeartbeatWake } from "../../heartbeat/wake.js";
|
|
8
8
|
import { resolveHeartbeatMdPath } from "../workspace-heartbeat-path.js";
|
|
9
9
|
import { readFile } from "fs/promises";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { getAllModels, getAvailableModels, init_providers } from "../../../providers/index.js";
|
|
2
2
|
import { ActivationPlanner } from "../../../extensions/activation-planner.js";
|
|
3
3
|
import { mergeActivationContext } from "../../../extensions/activation-context.js";
|
|
4
|
-
import { fetchRegistry, listExtensions, searchExtensions } from "../../../extensions/marketplace.js";
|
|
5
4
|
import { buildWhenContextSnapshot } from "../../../extensions/when-context.js";
|
|
5
|
+
import { fetchRegistry, listExtensions, searchExtensions } from "../../../extensions/marketplace.js";
|
|
6
6
|
import { createOAuthAsyncHandler } from "../oauth-async.js";
|
|
7
7
|
import { createOAuthHandler } from "../oauth.js";
|
|
8
8
|
import { extensionAssetMimeType } from "../lib/extension-assets.js";
|
|
@@ -19,8 +19,8 @@ import { resolveOmniRoute } from "../../../voice/realtime/omniRoute.js";
|
|
|
19
19
|
import { VoiceSessionCreationError, resolveStreamingStt, resolveStreamingTts } from "../../../voice/realtime/runtime.js";
|
|
20
20
|
import { getGatewayPrincipal } from "../../security/gateway-principal.js";
|
|
21
21
|
import { createGatewayRouteLogger } from "../lib/route-logger.js";
|
|
22
|
-
import { listTtsProvidersForApi } from "../../../voice/tts/list-providers.js";
|
|
23
22
|
import { listLocalVoiceModelStatuses, removeLocalVoiceModel, startLocalVoiceModelInstall } from "../../../voice/local/model-manager.js";
|
|
23
|
+
import { listTtsProvidersForApi } from "../../../voice/tts/list-providers.js";
|
|
24
24
|
import { z } from "zod";
|
|
25
25
|
//#region src/gateway/hono/routes/voice.ts
|
|
26
26
|
init_providers();
|
|
@@ -8,8 +8,8 @@ import { reloadImageGenerationProviders } from "../../agent/image/generation/pro
|
|
|
8
8
|
import "../../agent/mcp/bundle-mcp-tools.js";
|
|
9
9
|
import { ConfigHotReloader } from "../../config/reload.js";
|
|
10
10
|
import "../../config/index.js";
|
|
11
|
-
import { computeBundledExtensionExtensionsPatch } from "../../extensions/bundled-extension-activation.js";
|
|
12
11
|
import { sanitizeTunnelConfig } from "../../tunnel/tunnel-config.js";
|
|
12
|
+
import { computeBundledExtensionExtensionsPatch } from "../../extensions/bundled-extension-activation.js";
|
|
13
13
|
//#region src/gateway/service/config-coordinator.ts
|
|
14
14
|
init_providers();
|
|
15
15
|
init_logger();
|
|
@@ -51,9 +51,6 @@ import { MessageBus, MessageBusShutdownError } from "../infra/bus/queue.js";
|
|
|
51
51
|
import "../infra/bus/index.js";
|
|
52
52
|
import { AgentService } from "../agent/service.js";
|
|
53
53
|
import { ensureStarterAgentsInitialized } from "../agent/starter-agents.js";
|
|
54
|
-
import { setPairingBroadcastSink } from "../channels/pairing/pairing-events.js";
|
|
55
|
-
import { registerClarificationChannelRuntime } from "./clarify-runtime.js";
|
|
56
|
-
import { ChannelManager } from "../channels/manager.js";
|
|
57
54
|
import { getWorkspacePath } from "../config/workspace-path-helpers.js";
|
|
58
55
|
import "../config/index.js";
|
|
59
56
|
import { ManagedComposioEventPoller } from "../connectors/composio-managed-events.js";
|
|
@@ -71,6 +68,9 @@ import { DiscussionSealer } from "../discussions/sealer.js";
|
|
|
71
68
|
import "../discussions/index.js";
|
|
72
69
|
import { EndpointToolRuntime } from "../endpoint-tools/runtime.js";
|
|
73
70
|
import "../endpoint-tools/index.js";
|
|
71
|
+
import { setPairingBroadcastSink } from "../channels/pairing/pairing-events.js";
|
|
72
|
+
import { registerClarificationChannelRuntime } from "./clarify-runtime.js";
|
|
73
|
+
import { ChannelManager } from "../channels/manager.js";
|
|
74
74
|
import { assertGatewayAuthConfigured, extractToken, resolveGatewayAuth, validateToken } from "./auth.js";
|
|
75
75
|
import { prepareAutomationAgentSession } from "./automation-agent-session.js";
|
|
76
76
|
import { stopTailscaleExposure } from "./tailscale-lifecycle.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DEFAULT_ACK_MAX_CHARS, HEARTBEAT_OK, NO_REPLY, shouldSilence, stripHeartbeatToken } from "./tokens.js";
|
|
2
|
+
import { appendCronEventLines } from "./event-prompt.js";
|
|
2
3
|
import { isWithinActiveHours } from "./active-hours.js";
|
|
3
4
|
import { isHeartbeatContentEmpty } from "./content-check.js";
|
|
4
|
-
import { appendCronEventLines } from "./event-prompt.js";
|
|
5
5
|
import { createHeartbeatWake } from "./wake.js";
|
|
6
6
|
export { DEFAULT_ACK_MAX_CHARS, HEARTBEAT_OK, NO_REPLY, appendCronEventLines, createHeartbeatWake, isHeartbeatContentEmpty, isWithinActiveHours, shouldSilence, stripHeartbeatToken };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { runPostUpdateExtensionSync } from "../extensions/update.js";
|
|
2
1
|
import "./update-channels.js";
|
|
3
2
|
import { compareSemver, resolveNpmChannelTag } from "./update-check.js";
|
|
3
|
+
import { runPostUpdateExtensionSync } from "../extensions/update.js";
|
|
4
4
|
import { readPackageName, readPackageVersion } from "./package-json.js";
|
|
5
5
|
import { createDefaultCommandRunner, runCommandWithTimeout } from "./run-command.js";
|
|
6
6
|
import { XOPC_PACKAGE_NAME, cleanupGlobalRenameDirs, createGlobalInstallEnv, detectGlobalInstallManagerForRoot, resolveGlobalInstallSpec, resolveGlobalInstallTarget } from "./update-global.js";
|
|
@@ -23,9 +23,9 @@ import { parseModelRef } from "../../agent/models/selection.js";
|
|
|
23
23
|
import { buildReviewContext, resolveGitRoot } from "../../review/review-git.js";
|
|
24
24
|
import { MessageBus, MessageBusShutdownError } from "../../infra/bus/queue.js";
|
|
25
25
|
import "../../infra/bus/index.js";
|
|
26
|
-
import { prependEnvelopeTimestamp } from "../../channels/envelope-timestamp.js";
|
|
27
26
|
import { getWorkspacePath } from "../../config/workspace-path-helpers.js";
|
|
28
27
|
import "../../config/index.js";
|
|
28
|
+
import { prependEnvelopeTimestamp } from "../../channels/envelope-timestamp.js";
|
|
29
29
|
import { buildWorkflowChildTools } from "../../agent/workflow/workflow-child-tools.js";
|
|
30
30
|
import { WorkflowRunService } from "../../workflows/service/workflow-run-service.js";
|
|
31
31
|
import { WorkflowSessionBridge } from "../../workflows/service/workflow-session-bridge.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xopcai/xopc",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.276",
|
|
4
4
|
"description": "Local-first personal AI assistant with reviewable user understanding, durable tasks, workflows, automations, and local or cloud models.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/src/index.js",
|
|
@@ -166,9 +166,9 @@
|
|
|
166
166
|
"vitest": "4.1.5",
|
|
167
167
|
"vue": "^3.5.35",
|
|
168
168
|
"@xopcai/browser-control-contract": "0.1.0",
|
|
169
|
+
"@xopcai/realtime-client": "0.0.0",
|
|
169
170
|
"@xopcai/endpoint-tools-protocol": "0.0.0",
|
|
170
171
|
"@xopcai/gateway-contract": "0.0.0",
|
|
171
|
-
"@xopcai/realtime-client": "0.0.0",
|
|
172
172
|
"@xopcai/realtime-protocol": "0.0.0"
|
|
173
173
|
},
|
|
174
174
|
"scripts": {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{mn as e}from"./index-DfZZLrWp.js";function t(t){let{children:n,fallback:r}=t,i=r===void 0?null:r;return e()?n:i}export{t};
|