@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.
Files changed (89) hide show
  1. package/dist/browser-ext/manifest.json +1 -1
  2. package/dist/extensions/feishu/src/outbound/media-load.js +1 -1
  3. package/dist/extensions/telegram/xopc.extension.json +1 -1
  4. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-Dx6x7MXq.js → agent-avatar-dicebear-sj_1IC5H.js} +1 -1
  5. package/dist/gateway/static/root/assets/{agent-defaults-settings-panel-BuxTpjkf.js → agent-defaults-settings-panel-B5MRLEy8.js} +1 -1
  6. package/dist/gateway/static/root/assets/{agents-_f9HEOol.js → agents-CIzev0Qj.js} +1 -1
  7. package/dist/gateway/static/root/assets/{app-management-settings-panel-BYKWXcVl.js → app-management-settings-panel-DY3Vwxjq.js} +1 -1
  8. package/dist/gateway/static/root/assets/{appearance-settings-BmhSJc4X.js → appearance-settings-BeXvF-dZ.js} +1 -1
  9. package/dist/gateway/static/root/assets/{apps-page-DYTnK9lL.js → apps-page-Ch_9Ffgk.js} +1 -1
  10. package/dist/gateway/static/root/assets/{archive-plugin-BY6ncIeE.js → archive-plugin-BSgaIIGE.js} +1 -1
  11. package/dist/gateway/static/root/assets/{attachment-load-B6cw8KtO.js → attachment-load-CGNt02hP.js} +1 -1
  12. package/dist/gateway/static/root/assets/{automations-page-D1WwsSf3.js → automations-page-DoafJiVA.js} +1 -1
  13. package/dist/gateway/static/root/assets/{automations-workspace-CjF56MI_.js → automations-workspace-MACr99IO.js} +1 -1
  14. package/dist/gateway/static/root/assets/{binary-plugins-CC-wYm0K.js → binary-plugins-BsAL26Aq.js} +1 -1
  15. package/dist/gateway/static/root/assets/{block-editor-D8rh9KNe.js → block-editor-BxB7m8aI.js} +1 -1
  16. package/dist/gateway/static/root/assets/{browser-automations-page-CMrffyct.js → browser-automations-page-BNsO-Ip2.js} +1 -1
  17. package/dist/gateway/static/root/assets/{browser-settings-page-1onvP1Se.js → browser-settings-page-Nvdoi0B1.js} +1 -1
  18. package/dist/gateway/static/root/assets/{capabilities-settings-panel-C9ZSJxjr.js → capabilities-settings-panel-BluLJq5I.js} +1 -1
  19. package/dist/gateway/static/root/assets/{channels-settings-CvLTnI99.js → channels-settings-DYxxhcjb.js} +1 -1
  20. package/dist/gateway/static/root/assets/{chat-terminal-dock-F_dUdZ8l.js → chat-terminal-dock-ZCFwco1W.js} +1 -1
  21. package/dist/gateway/static/root/assets/{connectors-page-D7NHV8B2.js → connectors-page-Bpcp8UyE.js} +1 -1
  22. package/dist/gateway/static/root/assets/{date-picker-MHuajwQ-.js → date-picker-CpxFfgpg.js} +1 -1
  23. package/dist/gateway/static/root/assets/{dependency-picker-BcMJJI9X.js → dependency-picker-eCIGAfHa.js} +1 -1
  24. package/dist/gateway/static/root/assets/{desktop-pet-DlNm_7H0.js → desktop-pet-_MSZvIDO.js} +1 -1
  25. package/dist/gateway/static/root/assets/{desktop-pet-settings-BI1JQMnE.js → desktop-pet-settings-feBnJWkV.js} +1 -1
  26. package/dist/gateway/static/root/assets/{device-pairing-wizard-Cp5jO5B_.js → device-pairing-wizard-D_fB0fml.js} +1 -1
  27. package/dist/gateway/static/root/assets/{extension-debug-page-DZr0GkkA.js → extension-debug-page-CotBlxJ-.js} +1 -1
  28. package/dist/gateway/static/root/assets/{extension-page-QsHoQ6VX.js → extension-page-CFBmQ7U3.js} +1 -1
  29. package/dist/gateway/static/root/assets/{extension-settings-page-I2YX4Tzb.js → extension-settings-page-Cd1lfh8z.js} +1 -1
  30. package/dist/gateway/static/root/assets/{gateway-settings-GwfQu8rN.js → gateway-settings-BH35C8RI.js} +1 -1
  31. package/dist/gateway/static/root/assets/{heartbeat-settings-D-hVYXzL.js → heartbeat-settings-DRG0u1ON.js} +1 -1
  32. package/dist/gateway/static/root/assets/{home-page-SEW_0k8Q.js → home-page-BlZk-aD4.js} +1 -1
  33. package/dist/gateway/static/root/assets/{index-DfZZLrWp.js → index-CfQor-TM.js} +7 -7
  34. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-D_I-hiG2.js → keyboard-shortcuts-settings-BLHsdFIQ.js} +1 -1
  35. package/dist/gateway/static/root/assets/{local-app-workbench-page-BcY7wIHs.js → local-app-workbench-page-DJd71FlC.js} +1 -1
  36. package/dist/gateway/static/root/assets/{local-apps-page-DniZuXJJ.js → local-apps-page-BjAj1xhq.js} +1 -1
  37. package/dist/gateway/static/root/assets/{logs-page-DIiOMrJ_.js → logs-page-5MWeZ6Ae.js} +1 -1
  38. package/dist/gateway/static/root/assets/{management-settings-BPw41YX6.js → management-settings-CPHxDaOw.js} +1 -1
  39. package/dist/gateway/static/root/assets/{media-plugins-BoP3LSQz.js → media-plugins-BUOzcXCL.js} +1 -1
  40. package/dist/gateway/static/root/assets/{note-detail-panel-BI2xr54R.js → note-detail-panel-Bch98ut3.js} +3 -3
  41. package/dist/gateway/static/root/assets/{notes-page-CM7Ns8i1.js → notes-page-CWO5dQKN.js} +1 -1
  42. package/dist/gateway/static/root/assets/{page-tabs-B21WfV92.js → page-tabs-BgEYFhqS.js} +1 -1
  43. package/dist/gateway/static/root/assets/{preview-open-alternatives-BZoDpPqV.js → preview-open-alternatives-C-pQIx6W.js} +1 -1
  44. package/dist/gateway/static/root/assets/{proactive-card-Bw9CbzUX.js → proactive-card-DfjMVJUW.js} +1 -1
  45. package/dist/gateway/static/root/assets/{proactive-page-Czw_CEDB.js → proactive-page-BGVcVsbd.js} +1 -1
  46. package/dist/gateway/static/root/assets/{project-detail-page-jOECabbf.js → project-detail-page-DZFVirjV.js} +1 -1
  47. package/dist/gateway/static/root/assets/{projects-page-Ck9j5q0x.js → projects-page-B2g6inq-.js} +1 -1
  48. package/dist/gateway/static/root/assets/{remote-access-hub-2xcpaLTC.js → remote-access-hub-CbkUOkQY.js} +1 -1
  49. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-Bz5gIRjy.js → runtime-tools-settings-panel-DkAjFJ-9.js} +1 -1
  50. package/dist/gateway/static/root/assets/{schema-form-CqM0ntNm.js → schema-form-BpDcuSsl.js} +1 -1
  51. package/dist/gateway/static/root/assets/{sessions-page-CE9MK60k.js → sessions-page--7-w-0WS.js} +1 -1
  52. package/dist/gateway/static/root/assets/settings-advanced-gate-BvZrH_sp.js +1 -0
  53. package/dist/gateway/static/root/assets/{settings-form-section-LqcDYJ2m.js → settings-form-section-RElRijJw.js} +1 -1
  54. package/dist/gateway/static/root/assets/{settings-page-BpvBmheO.js → settings-page-CaixunoA.js} +1 -1
  55. package/dist/gateway/static/root/assets/{setup-status-panel-CYuqNzWH.js → setup-status-panel-Ul06Y5YX.js} +1 -1
  56. package/dist/gateway/static/root/assets/{share-preview-page-F3qhAryJ.js → share-preview-page-CC-bFOTf.js} +1 -1
  57. package/dist/gateway/static/root/assets/{shares-settings-B4wSoQM3.js → shares-settings-DwV2Wh7S.js} +1 -1
  58. package/dist/gateway/static/root/assets/{skill-reload-api-C3LD7fkR.js → skill-reload-api-CcOtxf53.js} +1 -1
  59. package/dist/gateway/static/root/assets/{skills-page-D9fI548d.js → skills-page-DmRvRxtY.js} +1 -1
  60. package/dist/gateway/static/root/assets/{skills-page.utils-DZNmyYqU.js → skills-page.utils-CT0-daZD.js} +1 -1
  61. package/dist/gateway/static/root/assets/{system-settings-panel-CMsmFOhV.js → system-settings-panel-DRIJ5mXq.js} +1 -1
  62. package/dist/gateway/static/root/assets/{task-detail-page-DRwTJ8E0.js → task-detail-page-BQjLHqSk.js} +1 -1
  63. package/dist/gateway/static/root/assets/{tunnel-api-DGaqXwql.js → tunnel-api-IvWcgZdD.js} +1 -1
  64. package/dist/gateway/static/root/assets/{use-autosave-bXCl0Y0j.js → use-autosave-Cq4--C1i.js} +1 -1
  65. package/dist/gateway/static/root/assets/{user-model-page-B3RjDSri.js → user-model-page-hwc5-nqV.js} +1 -1
  66. package/dist/gateway/static/root/assets/{voice-api-key-field-Cx9rl7mP.js → voice-api-key-field-CbJ6tKGI.js} +1 -1
  67. package/dist/gateway/static/root/assets/{work-discovery-overlay-ywJpaqKp.js → work-discovery-overlay-BG2pmXL3.js} +1 -1
  68. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-DyGukxOL.js → workflow-run-setup-panel-vw1229Fh.js} +1 -1
  69. package/dist/gateway/static/root/assets/{workflows-page-CifIqO2B.js → workflows-page-DZWpJHDr.js} +1 -1
  70. package/dist/gateway/static/root/index.html +1 -1
  71. package/dist/package.js +1 -1
  72. package/dist/src/browser/providers/browser-ext-install.js +78 -11
  73. package/dist/src/cli/commands/channels.js +1 -1
  74. package/dist/src/cli/commands/connectors.js +1 -1
  75. package/dist/src/cli/commands/extension-marketplace.js +2 -2
  76. package/dist/src/cli/commands/models.js +1 -1
  77. package/dist/src/cli/commands/onboard.js +2 -2
  78. package/dist/src/extensions/sdk/index.js +1 -1
  79. package/dist/src/extensions/update.js +1 -1
  80. package/dist/src/gateway/heartbeat/service.js +1 -1
  81. package/dist/src/gateway/hono/routes/auth-registry-extensions.js +1 -1
  82. package/dist/src/gateway/hono/routes/voice.js +1 -1
  83. package/dist/src/gateway/service/config-coordinator.js +1 -1
  84. package/dist/src/gateway/service.js +3 -3
  85. package/dist/src/heartbeat/index.js +1 -1
  86. package/dist/src/infra/update-runner.js +1 -1
  87. package/dist/src/tui/backends/embedded-backend.js +1 -1
  88. package/package.json +2 -2
  89. 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 directories = browserNativeManifestDirectories(opts?.platform ?? process.platform, opts?.home);
365
- if (directories.length === 0) return {
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, `#!/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`);
389
- chmodSync(hostPath, 493);
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.275",
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};