@fronti/core 1.0.5 → 1.0.7

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/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAyHA,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAM1C"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAmKA,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAM1C"}
package/dist/cli.js CHANGED
@@ -9,25 +9,40 @@ const yargs_1 = __importDefault(require("yargs"));
9
9
  const helpers_1 = require("yargs/helpers");
10
10
  const run_1 = require("./run");
11
11
  const install_1 = require("./install");
12
+ const constants_1 = require("./constants");
12
13
  function hasCommandArguments() {
13
14
  return process.argv.length > 2;
14
15
  }
15
16
  function runInstall(platform, runtimeDir, allowedExtensionIds, options = {}) {
16
17
  try {
17
- const result = (0, install_1.installNativeHostRuntime)({
18
- nativeHostPath: runtimeDir,
19
- platform,
20
- allowedExtensionIds
21
- });
18
+ // Use smartInstall unless force is specified
19
+ const result = options.force
20
+ ? (0, install_1.installNativeHostRuntime)({
21
+ nativeHostPath: runtimeDir,
22
+ platform,
23
+ allowedExtensionIds
24
+ })
25
+ : (0, install_1.smartInstall)({
26
+ nativeHostPath: runtimeDir,
27
+ platform,
28
+ allowedExtensionIds
29
+ });
22
30
  if (!options.quiet) {
23
- console.log(`✔ Native host manifest installed at ${result.manifestPath}`);
24
- console.log(`✔ Registered for platform: ${platform}`);
25
- console.log('You can now use the Fronti Chrome extension.');
31
+ if (result.usedExisting) {
32
+ console.log(`✔ Native host already installed and up-to-date (v${constants_1.NATIVE_HOST_VERSION})`);
33
+ console.log(` Manifest: ${result.manifestPath}`);
34
+ }
35
+ else {
36
+ console.log(`✔ Native host installed (v${constants_1.NATIVE_HOST_VERSION})`);
37
+ console.log(` Manifest: ${result.manifestPath}`);
38
+ console.log(` Runtime: ${runtimeDir}`);
39
+ console.log('You can now use the Fronti Chrome extension.');
40
+ }
26
41
  }
27
42
  }
28
43
  catch (error) {
29
44
  if (options.quiet) {
30
- console.error('[fronti-native-host] Auto-install failed:', error instanceof Error ? error.message : error);
45
+ console.error('[fronti-core] Auto-install failed:', error instanceof Error ? error.message : error);
31
46
  }
32
47
  else {
33
48
  throw error;
@@ -37,7 +52,7 @@ function runInstall(platform, runtimeDir, allowedExtensionIds, options = {}) {
37
52
  async function runCli() {
38
53
  const platform = process.platform;
39
54
  await (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv))
40
- .scriptName('fronti-native-host')
55
+ .scriptName('fronti-core')
41
56
  .command('install', 'Install or update the Fronti native host manifest', (cmd) => cmd
42
57
  .option('runtime-dir', {
43
58
  type: 'string',
@@ -48,12 +63,19 @@ async function runCli() {
48
63
  type: 'array',
49
64
  description: 'Allowed Chrome extension IDs',
50
65
  default: ['jojjbmgmggenijlkhjeaiodfoggjcjgj']
66
+ })
67
+ .option('force', {
68
+ type: 'boolean',
69
+ description: 'Force reinstall even if already up-to-date',
70
+ default: false
51
71
  }), (args) => {
52
72
  const runtimeDir = args['runtime-dir'];
53
73
  const allowed = args.extensions.map((id) => id.trim()).filter(Boolean);
54
- runInstall(platform, runtimeDir, allowed);
74
+ const force = args.force;
75
+ runInstall(platform, runtimeDir, allowed, { force });
55
76
  })
56
- .command('auto-install', false, (cmd) => cmd
77
+ .command('auto-install', false, // Hidden command for postinstall
78
+ (cmd) => cmd
57
79
  .option('runtime-dir', {
58
80
  type: 'string',
59
81
  default: (0, install_1.getDefaultRuntimeDir)()
@@ -73,15 +95,30 @@ async function runCli() {
73
95
  .command('status', 'Show current native host registration', () => { }, () => {
74
96
  const manifestPath = (0, install_1.getRegisteredManifestPath)(platform);
75
97
  if (!manifestPath) {
76
- console.log('Native host: not registered.');
98
+ console.log('Native host: not registered');
99
+ console.log(`Current version: v${constants_1.NATIVE_HOST_VERSION}`);
100
+ console.log('\nRun "fronti-core install" to register.');
77
101
  return;
78
102
  }
79
103
  const executable = (0, install_1.readManifestExecutable)(manifestPath);
104
+ const needsUpdate = (0, install_1.isInstallNeeded)(platform);
80
105
  console.log('Native host: registered');
81
- console.log(`Manifest path: ${manifestPath}`);
106
+ console.log(`Manifest: ${manifestPath}`);
82
107
  console.log(`Executable: ${executable ?? 'unknown'}`);
108
+ console.log(`Current version: v${constants_1.NATIVE_HOST_VERSION}`);
109
+ if (needsUpdate) {
110
+ console.log('\n⚠ Update available. Run "fronti-core install" to update.');
111
+ }
112
+ else {
113
+ console.log('\n✔ Up-to-date');
114
+ }
115
+ })
116
+ .command('$0', false, // Default command (hidden) - run as native host daemon
117
+ () => { }, async () => {
118
+ // If run without arguments, act as native host daemon
119
+ // This is for backwards compatibility
120
+ await (0, run_1.runNativeHost)();
83
121
  })
84
- .demandCommand(1)
85
122
  .help()
86
123
  .parseAsync();
87
124
  }
@@ -94,7 +131,7 @@ async function main() {
94
131
  }
95
132
  }
96
133
  main().catch((error) => {
97
- console.error('[fronti-native-host] Unexpected error:', error);
134
+ console.error('[fronti-core] Unexpected error:', error);
98
135
  process.exit(1);
99
136
  });
100
137
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  export declare const NATIVE_HOST_NAME = "com.fronti.core";
2
2
  export declare const CONFIG_DIR_NAME = ".fronti";
3
3
  export declare const WORKSPACE_CONFIG_FILE = "workspace.json";
4
+ export declare const NATIVE_HOST_DIR_NAME = "native-host";
5
+ export declare const NATIVE_HOST_VERSION = "1.0.7";
4
6
  export declare const REGISTRY_PATHS: {
5
7
  readonly windows: "HKCU\\Software\\Google\\Chrome\\NativeMessagingHosts\\com.fronti.core";
6
8
  readonly darwin: "Library/Application Support/Google/Chrome/NativeMessagingHosts";
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,oBAAoB,CAAC;AAClD,eAAO,MAAM,eAAe,YAAY,CAAC;AACzC,eAAO,MAAM,qBAAqB,mBAAmB,CAAC;AAEtD,eAAO,MAAM,cAAc;;;;CAIjB,CAAC;AAEX,eAAO,MAAM,iBAAiB;;;;CAIpB,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,oBAAoB,CAAC;AAClD,eAAO,MAAM,eAAe,YAAY,CAAC;AACzC,eAAO,MAAM,qBAAqB,mBAAmB,CAAC;AACtD,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAGlD,eAAO,MAAM,mBAAmB,UAAU,CAAC;AAE3C,eAAO,MAAM,cAAc;;;;CAIjB,CAAC;AAEX,eAAO,MAAM,iBAAiB;;;;CAIpB,CAAC"}
package/dist/constants.js CHANGED
@@ -1,9 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NATIVE_HOST_FILES = exports.REGISTRY_PATHS = exports.WORKSPACE_CONFIG_FILE = exports.CONFIG_DIR_NAME = exports.NATIVE_HOST_NAME = void 0;
3
+ exports.NATIVE_HOST_FILES = exports.REGISTRY_PATHS = exports.NATIVE_HOST_VERSION = exports.NATIVE_HOST_DIR_NAME = exports.WORKSPACE_CONFIG_FILE = exports.CONFIG_DIR_NAME = exports.NATIVE_HOST_NAME = void 0;
4
4
  exports.NATIVE_HOST_NAME = 'com.fronti.core';
5
5
  exports.CONFIG_DIR_NAME = '.fronti';
6
6
  exports.WORKSPACE_CONFIG_FILE = 'workspace.json';
7
+ exports.NATIVE_HOST_DIR_NAME = 'native-host';
8
+ // Version for smart manifest management
9
+ exports.NATIVE_HOST_VERSION = '1.0.7';
7
10
  exports.REGISTRY_PATHS = {
8
11
  windows: `HKCU\\Software\\Google\\Chrome\\NativeMessagingHosts\\${exports.NATIVE_HOST_NAME}`,
9
12
  darwin: 'Library/Application Support/Google/Chrome/NativeMessagingHosts',
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,gBAAgB,GAAG,iBAAiB,CAAC;AACrC,QAAA,eAAe,GAAG,SAAS,CAAC;AAC5B,QAAA,qBAAqB,GAAG,gBAAgB,CAAC;AAEzC,QAAA,cAAc,GAAG;IAC5B,OAAO,EAAE,yDAAyD,wBAAgB,EAAE;IACpF,MAAM,EAAE,gEAAgE;IACxE,KAAK,EAAE,4CAA4C;CAC3C,CAAC;AAEE,QAAA,iBAAiB,GAAG;IAC/B,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,SAAS;CACT,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,gBAAgB,GAAG,iBAAiB,CAAC;AACrC,QAAA,eAAe,GAAG,SAAS,CAAC;AAC5B,QAAA,qBAAqB,GAAG,gBAAgB,CAAC;AACzC,QAAA,oBAAoB,GAAG,aAAa,CAAC;AAElD,wCAAwC;AAC3B,QAAA,mBAAmB,GAAG,OAAO,CAAC;AAE9B,QAAA,cAAc,GAAG;IAC5B,OAAO,EAAE,yDAAyD,wBAAgB,EAAE;IACpF,MAAM,EAAE,gEAAgE;IACxE,KAAK,EAAE,4CAA4C;CAC3C,CAAC;AAEE,QAAA,iBAAiB,GAAG;IAC/B,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,SAAS;CACT,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export { runNativeHost, terminateActiveProcesses } from './run';
2
- export { installNativeHostRuntime, uninstallNativeHost, getRegisteredManifestPath, readManifestExecutable, getDefaultRuntimeDir } from './install';
2
+ export { installNativeHostRuntime, smartInstall, isInstallNeeded, uninstallNativeHost, getRegisteredManifestPath, readManifestExecutable, getDefaultRuntimeDir } from './install';
3
3
  export { ensureRuntimeFiles } from './runtime';
4
4
  export { createManifest } from './manifest';
5
5
  export { registerNativeHost, unregisterNativeHost } from './registry';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,OAAO,CAAC;AAChE,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,yBAAyB,EACzB,sBAAsB,EACtB,oBAAoB,EACrB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACtE,cAAc,aAAa,CAAC;AAC5B,YAAY,EAAE,QAAQ,EAAE,kBAAkB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,OAAO,CAAC;AAChE,OAAO,EACL,wBAAwB,EACxB,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,yBAAyB,EACzB,sBAAsB,EACtB,oBAAoB,EACrB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACtE,cAAc,aAAa,CAAC;AAC5B,YAAY,EAAE,QAAQ,EAAE,kBAAkB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC"}
package/dist/index.js CHANGED
@@ -14,12 +14,14 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.unregisterNativeHost = exports.registerNativeHost = exports.createManifest = exports.ensureRuntimeFiles = exports.getDefaultRuntimeDir = exports.readManifestExecutable = exports.getRegisteredManifestPath = exports.uninstallNativeHost = exports.installNativeHostRuntime = exports.terminateActiveProcesses = exports.runNativeHost = void 0;
17
+ exports.unregisterNativeHost = exports.registerNativeHost = exports.createManifest = exports.ensureRuntimeFiles = exports.getDefaultRuntimeDir = exports.readManifestExecutable = exports.getRegisteredManifestPath = exports.uninstallNativeHost = exports.isInstallNeeded = exports.smartInstall = exports.installNativeHostRuntime = exports.terminateActiveProcesses = exports.runNativeHost = void 0;
18
18
  var run_1 = require("./run");
19
19
  Object.defineProperty(exports, "runNativeHost", { enumerable: true, get: function () { return run_1.runNativeHost; } });
20
20
  Object.defineProperty(exports, "terminateActiveProcesses", { enumerable: true, get: function () { return run_1.terminateActiveProcesses; } });
21
21
  var install_1 = require("./install");
22
22
  Object.defineProperty(exports, "installNativeHostRuntime", { enumerable: true, get: function () { return install_1.installNativeHostRuntime; } });
23
+ Object.defineProperty(exports, "smartInstall", { enumerable: true, get: function () { return install_1.smartInstall; } });
24
+ Object.defineProperty(exports, "isInstallNeeded", { enumerable: true, get: function () { return install_1.isInstallNeeded; } });
23
25
  Object.defineProperty(exports, "uninstallNativeHost", { enumerable: true, get: function () { return install_1.uninstallNativeHost; } });
24
26
  Object.defineProperty(exports, "getRegisteredManifestPath", { enumerable: true, get: function () { return install_1.getRegisteredManifestPath; } });
25
27
  Object.defineProperty(exports, "readManifestExecutable", { enumerable: true, get: function () { return install_1.readManifestExecutable; } });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6BAAgE;AAAvD,oGAAA,aAAa,OAAA;AAAE,+GAAA,wBAAwB,OAAA;AAChD,qCAMmB;AALjB,mHAAA,wBAAwB,OAAA;AACxB,8GAAA,mBAAmB,OAAA;AACnB,oHAAA,yBAAyB,OAAA;AACzB,iHAAA,sBAAsB,OAAA;AACtB,+GAAA,oBAAoB,OAAA;AAEtB,qCAA+C;AAAtC,6GAAA,kBAAkB,OAAA;AAC3B,uCAA4C;AAAnC,0GAAA,cAAc,OAAA;AACvB,uCAAsE;AAA7D,8GAAA,kBAAkB,OAAA;AAAE,gHAAA,oBAAoB,OAAA;AACjD,8CAA4B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6BAAgE;AAAvD,oGAAA,aAAa,OAAA;AAAE,+GAAA,wBAAwB,OAAA;AAChD,qCAQmB;AAPjB,mHAAA,wBAAwB,OAAA;AACxB,uGAAA,YAAY,OAAA;AACZ,0GAAA,eAAe,OAAA;AACf,8GAAA,mBAAmB,OAAA;AACnB,oHAAA,yBAAyB,OAAA;AACzB,iHAAA,sBAAsB,OAAA;AACtB,+GAAA,oBAAoB,OAAA;AAEtB,qCAA+C;AAAtC,6GAAA,kBAAkB,OAAA;AAC3B,uCAA4C;AAAnC,0GAAA,cAAc,OAAA;AACvB,uCAAsE;AAA7D,8GAAA,kBAAkB,OAAA;AAAE,gHAAA,oBAAoB,OAAA;AACjD,8CAA4B"}
package/dist/install.d.ts CHANGED
@@ -1,6 +1,26 @@
1
1
  import type { InstallOptions, InstallResult, Platform } from './types';
2
+ /**
3
+ * Returns a fixed system-wide runtime directory that works for both
4
+ * npm global install and VSCode extension installation.
5
+ * Location: ~/.fronti/native-host/
6
+ */
2
7
  export declare function getDefaultRuntimeDir(): string;
8
+ /**
9
+ * Check if installation is needed based on:
10
+ * 1. Manifest doesn't exist
11
+ * 2. Runtime files don't exist
12
+ * 3. Current version is newer than installed version
13
+ */
14
+ export declare function isInstallNeeded(platform: Platform): boolean;
15
+ /**
16
+ * Install or update the native host runtime.
17
+ * Uses smart version checking to avoid unnecessary overwrites.
18
+ */
3
19
  export declare function installNativeHostRuntime(options: InstallOptions): InstallResult;
20
+ /**
21
+ * Smart install - only installs if needed
22
+ */
23
+ export declare function smartInstall(options: InstallOptions): InstallResult;
4
24
  export declare function uninstallNativeHost(platform: Platform): void;
5
25
  export declare function getRegisteredManifestPath(platform: Platform): string | null;
6
26
  export declare function readManifestExecutable(manifestPath: string): string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEvE,wBAAgB,oBAAoB,IAAI,MAAM,CAG7C;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,cAAc,GAAG,aAAa,CAgB/E;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE5D;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI,CA+B3E;AAED,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQ1E"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEvE;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAiDD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAgC3D;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,cAAc,GAAG,aAAa,CAmB/E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,aAAa,CAYnE;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE5D;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI,CA+B3E;AAED,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQ1E"}
package/dist/install.js CHANGED
@@ -34,7 +34,9 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.getDefaultRuntimeDir = getDefaultRuntimeDir;
37
+ exports.isInstallNeeded = isInstallNeeded;
37
38
  exports.installNativeHostRuntime = installNativeHostRuntime;
39
+ exports.smartInstall = smartInstall;
38
40
  exports.uninstallNativeHost = uninstallNativeHost;
39
41
  exports.getRegisteredManifestPath = getRegisteredManifestPath;
40
42
  exports.readManifestExecutable = readManifestExecutable;
@@ -46,22 +48,125 @@ const manifest_1 = require("./manifest");
46
48
  const registry_1 = require("./registry");
47
49
  const runtime_1 = require("./runtime");
48
50
  const constants_1 = require("./constants");
51
+ /**
52
+ * Returns a fixed system-wide runtime directory that works for both
53
+ * npm global install and VSCode extension installation.
54
+ * Location: ~/.fronti/native-host/
55
+ */
49
56
  function getDefaultRuntimeDir() {
50
- const packageRoot = path.resolve(__dirname, '..');
51
- return path.join(packageRoot, 'runtime');
57
+ return path.join(os.homedir(), constants_1.CONFIG_DIR_NAME, constants_1.NATIVE_HOST_DIR_NAME);
52
58
  }
59
+ /**
60
+ * Read the version from an existing manifest
61
+ */
62
+ function readManifestVersion(manifestPath) {
63
+ try {
64
+ const data = fs.readFileSync(manifestPath, 'utf8');
65
+ const manifest = JSON.parse(data);
66
+ return manifest?.version ?? null;
67
+ }
68
+ catch {
69
+ return null;
70
+ }
71
+ }
72
+ /**
73
+ * Check if the runtime files (host.sh/host.bat, host.js) exist and are valid
74
+ */
75
+ function runtimeFilesExist(runtimeDir, platform) {
76
+ try {
77
+ const hostJs = path.join(runtimeDir, 'host.js');
78
+ const hostScript = platform === 'win32'
79
+ ? path.join(runtimeDir, 'host.bat')
80
+ : path.join(runtimeDir, 'host.sh');
81
+ return fs.existsSync(hostJs) && fs.existsSync(hostScript);
82
+ }
83
+ catch {
84
+ return false;
85
+ }
86
+ }
87
+ /**
88
+ * Compare semantic versions. Returns:
89
+ * - positive if v1 > v2
90
+ * - negative if v1 < v2
91
+ * - 0 if equal
92
+ */
93
+ function compareVersions(v1, v2) {
94
+ const parts1 = v1.split('.').map(Number);
95
+ const parts2 = v2.split('.').map(Number);
96
+ for (let i = 0; i < Math.max(parts1.length, parts2.length); i++) {
97
+ const p1 = parts1[i] || 0;
98
+ const p2 = parts2[i] || 0;
99
+ if (p1 !== p2)
100
+ return p1 - p2;
101
+ }
102
+ return 0;
103
+ }
104
+ /**
105
+ * Check if installation is needed based on:
106
+ * 1. Manifest doesn't exist
107
+ * 2. Runtime files don't exist
108
+ * 3. Current version is newer than installed version
109
+ */
110
+ function isInstallNeeded(platform) {
111
+ const manifestPath = getRegisteredManifestPath(platform);
112
+ // No manifest registered - need to install
113
+ if (!manifestPath) {
114
+ return true;
115
+ }
116
+ // Check if manifest file actually exists
117
+ if (!fs.existsSync(manifestPath)) {
118
+ return true;
119
+ }
120
+ // Read manifest to get runtime path
121
+ const executablePath = readManifestExecutable(manifestPath);
122
+ if (!executablePath) {
123
+ return true;
124
+ }
125
+ // Check if runtime directory exists (parent of executable)
126
+ const runtimeDir = path.dirname(executablePath);
127
+ if (!runtimeFilesExist(runtimeDir, platform)) {
128
+ return true;
129
+ }
130
+ // Check version - install if current version is newer
131
+ const installedVersion = readManifestVersion(manifestPath);
132
+ if (!installedVersion) {
133
+ return true;
134
+ }
135
+ return compareVersions(constants_1.NATIVE_HOST_VERSION, installedVersion) > 0;
136
+ }
137
+ /**
138
+ * Install or update the native host runtime.
139
+ * Uses smart version checking to avoid unnecessary overwrites.
140
+ */
53
141
  function installNativeHostRuntime(options) {
54
142
  const { nativeHostPath, platform, allowedExtensionIds } = options;
143
+ // Create runtime directory and files
55
144
  (0, runtime_1.ensureRuntimeFiles)(nativeHostPath, platform);
145
+ // Create manifest with version
56
146
  const manifestPath = path.join(nativeHostPath, 'manifest.json');
57
147
  const manifest = (0, manifest_1.createManifest)(nativeHostPath, platform, allowedExtensionIds);
58
148
  fs.writeFileSync(manifestPath, JSON.stringify(manifest, null, 2), { encoding: 'utf8' });
149
+ // Register with Chrome
59
150
  (0, registry_1.registerNativeHost)(manifestPath, platform);
60
151
  return {
61
152
  manifestPath,
62
153
  usedExisting: false
63
154
  };
64
155
  }
156
+ /**
157
+ * Smart install - only installs if needed
158
+ */
159
+ function smartInstall(options) {
160
+ const { platform } = options;
161
+ if (!isInstallNeeded(platform)) {
162
+ const existingManifest = getRegisteredManifestPath(platform);
163
+ return {
164
+ manifestPath: existingManifest,
165
+ usedExisting: true
166
+ };
167
+ }
168
+ return installNativeHostRuntime(options);
169
+ }
65
170
  function uninstallNativeHost(platform) {
66
171
  (0, registry_1.unregisterNativeHost)(platform);
67
172
  }
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,oDAEC;AAuDD,0CAgCC;AAMD,4DAmBC;AAKD,oCAYC;AAED,kDAEC;AAED,8DA+BC;AAED,wDAQC;AAjMD,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AACzB,iDAAyC;AACzC,yCAA4C;AAC5C,yCAAsE;AACtE,uCAA+C;AAC/C,2CAA2H;AAG3H;;;;GAIG;AACH,SAAgB,oBAAoB;IAClC,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,2BAAe,EAAE,gCAAoB,CAAC,CAAC;AACxE,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,YAAoB;IAC/C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,OAAO,QAAQ,EAAE,OAAO,IAAI,IAAI,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,UAAkB,EAAE,QAAkB;IAC/D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,QAAQ,KAAK,OAAO;YACrC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;YACnC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAErC,OAAO,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,eAAe,CAAC,EAAU,EAAE,EAAU;IAC7C,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAChE,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,EAAE,KAAK,EAAE;YAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAChC,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;GAKG;AACH,SAAgB,eAAe,CAAC,QAAkB;IAChD,MAAM,YAAY,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IAEzD,2CAA2C;IAC3C,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,yCAAyC;IACzC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oCAAoC;IACpC,MAAM,cAAc,GAAG,sBAAsB,CAAC,YAAY,CAAC,CAAC;IAC5D,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,2DAA2D;IAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAChD,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,sDAAsD;IACtD,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAC3D,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,eAAe,CAAC,+BAAmB,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC;AACpE,CAAC;AAED;;;GAGG;AACH,SAAgB,wBAAwB,CAAC,OAAuB;IAC9D,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC;IAElE,qCAAqC;IACrC,IAAA,4BAAkB,EAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IAE7C,+BAA+B;IAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAG,IAAA,yBAAc,EAAC,cAAc,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;IAE/E,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAExF,uBAAuB;IACvB,IAAA,6BAAkB,EAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAE3C,OAAO;QACL,YAAY;QACZ,YAAY,EAAE,KAAK;KACpB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,OAAuB;IAClD,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAE7B,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC;QAC7D,OAAO;YACL,YAAY,EAAE,gBAAiB;YAC/B,YAAY,EAAE,IAAI;SACnB,CAAC;IACJ,CAAC;IAED,OAAO,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAC3C,CAAC;AAED,SAAgB,mBAAmB,CAAC,QAAkB;IACpD,IAAA,+BAAoB,EAAC,QAAQ,CAAC,CAAC;AACjC,CAAC;AAED,SAAgB,yBAAyB,CAAC,QAAkB;IAC1D,IAAI,CAAC;QACH,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,MAAM,GAAG,IAAA,wBAAQ,EAAC,cAAc,0BAAc,CAAC,OAAO,OAAO,EAAE;oBACnE,QAAQ,EAAE,MAAM;oBAChB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;iBAClC,CAAC,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;gBAC5C,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACxC,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAC5B,EAAE,CAAC,OAAO,EAAE,EACZ,0BAAc,CAAC,MAAM,EACrB,GAAG,4BAAgB,OAAO,CAC3B,CAAC;gBACF,OAAO,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3D,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACR,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAC5B,EAAE,CAAC,OAAO,EAAE,EACZ,0BAAc,CAAC,KAAK,EACpB,GAAG,4BAAgB,OAAO,CAC3B,CAAC;gBACF,OAAO,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3D,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAgB,sBAAsB,CAAC,YAAoB;IACzD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,OAAO,QAAQ,EAAE,IAAI,IAAI,IAAI,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE5D,wBAAgB,cAAc,CAC5B,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,QAAQ,EAClB,mBAAmB,CAAC,EAAE,MAAM,EAAE,GAC7B,kBAAkB,CAkBpB"}
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE5D,wBAAgB,cAAc,CAC5B,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,QAAQ,EAClB,mBAAmB,CAAC,EAAE,MAAM,EAAE,GAC7B,kBAAkB,CAmBpB"}
package/dist/manifest.js CHANGED
@@ -48,7 +48,8 @@ function createManifest(nativeHostPath, platform, allowedExtensionIds) {
48
48
  description: 'Fronti Core - Bridge component for browser, VS Code, and Claude Code',
49
49
  path: hostExecutable,
50
50
  type: 'stdio',
51
- allowed_origins: extensionIds.map((id) => `chrome-extension://${id}/`)
51
+ allowed_origins: extensionIds.map((id) => `chrome-extension://${id}/`),
52
+ version: constants_1.NATIVE_HOST_VERSION
52
53
  };
53
54
  }
54
55
  //# sourceMappingURL=manifest.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,wCAsBC;AA1BD,2CAA6B;AAC7B,2CAAkE;AAGlE,SAAgB,cAAc,CAC5B,cAAsB,EACtB,QAAkB,EAClB,mBAA8B;IAE9B,MAAM,cAAc,GAClB,QAAQ,KAAK,OAAO;QAClB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,6BAAiB,CAAC,OAAO,CAAC;QACtD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,6BAAiB,CAAC,IAAI,CAAC,CAAC;IAExD,MAAM,YAAY,GAChB,mBAAmB,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC;QACnD,CAAC,CAAC,mBAAmB;QACrB,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC;IAE3C,OAAO;QACL,IAAI,EAAE,4BAAgB;QACtB,WAAW,EAAE,sEAAsE;QACnF,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,OAAO;QACb,eAAe,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,sBAAsB,EAAE,GAAG,CAAC;KACvE,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,wCAuBC;AA3BD,2CAA6B;AAC7B,2CAAuF;AAGvF,SAAgB,cAAc,CAC5B,cAAsB,EACtB,QAAkB,EAClB,mBAA8B;IAE9B,MAAM,cAAc,GAClB,QAAQ,KAAK,OAAO;QAClB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,6BAAiB,CAAC,OAAO,CAAC;QACtD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,6BAAiB,CAAC,IAAI,CAAC,CAAC;IAExD,MAAM,YAAY,GAChB,mBAAmB,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC;QACnD,CAAC,CAAC,mBAAmB;QACrB,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC;IAE3C,OAAO;QACL,IAAI,EAAE,4BAAgB;QACtB,WAAW,EAAE,sEAAsE;QACnF,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,OAAO;QACb,eAAe,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,sBAAsB,EAAE,GAAG,CAAC;QACtE,OAAO,EAAE,+BAAmB;KAC7B,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAiCxC,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CA4B9E"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAwIxC,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CA+B9E"}
package/dist/runtime.js CHANGED
@@ -36,50 +36,152 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.ensureRuntimeFiles = ensureRuntimeFiles;
37
37
  const fs = __importStar(require("fs"));
38
38
  const path = __importStar(require("path"));
39
- const HOST_JS_CONTENT = `#!/usr/bin/env node
40
- const { runNativeHost } = require('../dist/index.js');
41
-
42
- runNativeHost();
39
+ /**
40
+ * Host.js content - uses relative path to dist folder
41
+ * which will be copied alongside host.js
42
+ */
43
+ const HOST_JS_CONTENT = `#!/usr/bin/env node
44
+ const { runNativeHost } = require('./dist/index.js');
45
+
46
+ runNativeHost();
43
47
  `;
44
- function buildHostBat(nodePath) {
45
- const normalizedPath = nodePath.replace(/"/g, '');
46
- return `@echo off
47
- set "NODE_BIN=${normalizedPath}"
48
- if not exist "%NODE_BIN%" set "NODE_BIN=node"
49
- "%NODE_BIN%" "%~dp0host.js" %*
48
+ /**
49
+ * Windows batch file - dynamically finds Node.js
50
+ * Priority: 1) PATH lookup, 2) Common install paths
51
+ */
52
+ function buildHostBat() {
53
+ return `@echo off
54
+
55
+ REM First try PATH lookup (most reliable)
56
+ where node >nul 2>&1
57
+ if %ERRORLEVEL% equ 0 (
58
+ for /f "delims=" %%i in ('where node') do (
59
+ "%%i" "%~dp0host.js" %*
60
+ exit /b %ERRORLEVEL%
61
+ )
62
+ )
63
+
64
+ REM Try common Node.js installation paths
65
+ if exist "C:\\Program Files\\nodejs\\node.exe" (
66
+ "C:\\Program Files\\nodejs\\node.exe" "%~dp0host.js" %*
67
+ exit /b %ERRORLEVEL%
68
+ )
69
+
70
+ if exist "%LOCALAPPDATA%\\Programs\\nodejs\\node.exe" (
71
+ "%LOCALAPPDATA%\\Programs\\nodejs\\node.exe" "%~dp0host.js" %*
72
+ exit /b %ERRORLEVEL%
73
+ )
74
+
75
+ if exist "%APPDATA%\\nvm\\current\\node.exe" (
76
+ "%APPDATA%\\nvm\\current\\node.exe" "%~dp0host.js" %*
77
+ exit /b %ERRORLEVEL%
78
+ )
79
+
80
+ if exist "C:\\Program Files (x86)\\nodejs\\node.exe" (
81
+ "C:\\Program Files (x86)\\nodejs\\node.exe" "%~dp0host.js" %*
82
+ exit /b %ERRORLEVEL%
83
+ )
84
+
85
+ echo Fronti: Node.js not found. Please install Node.js 18+ >&2
86
+ exit /b 1
50
87
  `;
51
88
  }
52
- function buildHostSh(nodePath) {
53
- const normalizedPath = nodePath.replace(/"/g, '\\"');
54
- return `#!/usr/bin/env bash
55
- DIR="$(cd "$(dirname "\${BASH_SOURCE[0]}")" && pwd)"
56
- NODE_BIN="${normalizedPath}"
57
- if [ ! -x "$NODE_BIN" ]; then
58
- NODE_BIN="$(command -v node || true)"
59
- fi
60
- if [ -z "$NODE_BIN" ]; then
61
- echo "Fronti: Node.js not found in PATH" >&2
62
- exit 1
63
- fi
64
- exec "$NODE_BIN" "\${DIR}/host.js"
89
+ /**
90
+ * Unix shell script - dynamically finds Node.js
91
+ * Priority: 1) PATH lookup, 2) Common install paths
92
+ */
93
+ function buildHostSh() {
94
+ return `#!/usr/bin/env bash
95
+ set -e
96
+
97
+ DIR="$(cd "$(dirname "\${BASH_SOURCE[0]}")" && pwd)"
98
+
99
+ # Try to find Node.js dynamically
100
+ find_node() {
101
+ # First try PATH
102
+ if command -v node >/dev/null 2>&1; then
103
+ command -v node
104
+ return 0
105
+ fi
106
+
107
+ # Try common installation paths
108
+ local paths=(
109
+ "/usr/local/bin/node"
110
+ "/usr/bin/node"
111
+ "$HOME/.nvm/current/bin/node"
112
+ "$HOME/.volta/bin/node"
113
+ "$HOME/.asdf/shims/node"
114
+ "/opt/homebrew/bin/node"
115
+ )
116
+
117
+ for p in "\${paths[@]}"; do
118
+ if [ -x "$p" ]; then
119
+ echo "$p"
120
+ return 0
121
+ fi
122
+ done
123
+
124
+ # Try nvm if available
125
+ if [ -f "$HOME/.nvm/nvm.sh" ]; then
126
+ source "$HOME/.nvm/nvm.sh" >/dev/null 2>&1
127
+ if command -v node >/dev/null 2>&1; then
128
+ command -v node
129
+ return 0
130
+ fi
131
+ fi
132
+
133
+ return 1
134
+ }
135
+
136
+ NODE_BIN="$(find_node)" || {
137
+ echo "Fronti: Node.js not found. Please install Node.js 18+" >&2
138
+ exit 1
139
+ }
140
+
141
+ exec "$NODE_BIN" "\${DIR}/host.js"
65
142
  `;
66
143
  }
144
+ /**
145
+ * Copy the dist folder to target directory
146
+ */
147
+ function copyDistFolder(targetDir) {
148
+ const sourceDistDir = path.resolve(__dirname);
149
+ const targetDistDir = path.join(targetDir, 'dist');
150
+ if (!fs.existsSync(targetDistDir)) {
151
+ fs.mkdirSync(targetDistDir, { recursive: true });
152
+ }
153
+ // Copy all .js files from source dist to target dist
154
+ const files = fs.readdirSync(sourceDistDir);
155
+ for (const file of files) {
156
+ if (file.endsWith('.js') || file.endsWith('.json')) {
157
+ const sourcePath = path.join(sourceDistDir, file);
158
+ const targetPath = path.join(targetDistDir, file);
159
+ // Only copy files, not directories
160
+ if (fs.statSync(sourcePath).isFile()) {
161
+ fs.copyFileSync(sourcePath, targetPath);
162
+ }
163
+ }
164
+ }
165
+ }
67
166
  function ensureRuntimeFiles(targetDir, platform) {
68
167
  if (!fs.existsSync(targetDir)) {
69
168
  fs.mkdirSync(targetDir, { recursive: true });
70
169
  }
71
- const nodePath = process.execPath;
72
170
  const hostJsPath = path.join(targetDir, 'host.js');
73
171
  const hostBatPath = path.join(targetDir, 'host.bat');
74
172
  const hostShPath = path.join(targetDir, 'host.sh');
173
+ // Write host files with dynamic Node.js resolution
75
174
  fs.writeFileSync(hostJsPath, HOST_JS_CONTENT, { encoding: 'utf8' });
76
- fs.writeFileSync(hostBatPath, buildHostBat(nodePath), { encoding: 'utf8' });
77
- fs.writeFileSync(hostShPath, buildHostSh(nodePath), { encoding: 'utf8' });
175
+ fs.writeFileSync(hostBatPath, buildHostBat(), { encoding: 'utf8' });
176
+ fs.writeFileSync(hostShPath, buildHostSh(), { encoding: 'utf8' });
177
+ // Copy dist folder so host.js can require it
178
+ copyDistFolder(targetDir);
179
+ // Set executable permissions
78
180
  try {
79
181
  fs.chmodSync(hostJsPath, 0o755);
80
182
  }
81
183
  catch {
82
- // Ignore
184
+ // Ignore permission errors on Windows
83
185
  }
84
186
  if (platform !== 'win32') {
85
187
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCA,gDA4BC;AA/DD,uCAAyB;AACzB,2CAA6B;AAG7B,MAAM,eAAe,GAAG;;;;CAIvB,CAAC;AAEF,SAAS,YAAY,CAAC,QAAgB;IACpC,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAClD,OAAO;gBACO,cAAc;;;CAG7B,CAAC;AACF,CAAC;AAED,SAAS,WAAW,CAAC,QAAgB;IACnC,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACrD,OAAO;;YAEG,cAAc;;;;;;;;;CASzB,CAAC;AACF,CAAC;AAED,SAAgB,kBAAkB,CAAC,SAAiB,EAAE,QAAkB;IACtE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAElC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAEnD,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,eAAe,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IACpE,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,YAAY,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5E,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,WAAW,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAE1E,IAAI,CAAC;QACH,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IAED,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -4,6 +4,7 @@ export interface NativeHostManifest {
4
4
  path: string;
5
5
  type: 'stdio';
6
6
  allowed_origins: string[];
7
+ version: string;
7
8
  }
8
9
  export type Platform = 'win32' | 'darwin' | 'linux';
9
10
  export interface InstallOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEpD,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,QAAQ,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;CACvB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEpD,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,QAAQ,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;CACvB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fronti/core",
3
- "version": "1.0.5",
3
+ "version": "1.0.7",
4
4
  "description": "Visual-first AI coding agent for local codebases. Select elements in browser, describe changes, agent applies edits.",
5
5
  "type": "commonjs",
6
6
  "main": "dist/index.js",
@@ -8,16 +8,12 @@
8
8
  "fronti-core": "dist/cli.js"
9
9
  },
10
10
  "files": [
11
- "dist",
12
- "runtime/host.bat",
13
- "runtime/host.js",
14
- "runtime/host.sh"
11
+ "dist"
15
12
  ],
16
13
  "scripts": {
17
14
  "build": "tsc -p ./tsconfig.json",
18
15
  "clean": "rimraf dist",
19
- "prepare": "npm run build",
20
- "postinstall": "node ./dist/cli.js auto-install || true"
16
+ "prepare": "npm run build && node ./dist/cli.js auto-install || true"
21
17
  },
22
18
  "keywords": [
23
19
  "fronti",
package/runtime/host.bat DELETED
@@ -1,4 +0,0 @@
1
- @echo off
2
- set "NODE_BIN=C:\Program Files\nodejs\node.exe"
3
- if not exist "%NODE_BIN%" set "NODE_BIN=node"
4
- "%NODE_BIN%" "%~dp0host.js" %*
package/runtime/host.js DELETED
@@ -1,4 +0,0 @@
1
- #!/usr/bin/env node
2
- const { runNativeHost } = require('../dist/index.js');
3
-
4
- runNativeHost();
package/runtime/host.sh DELETED
@@ -1,11 +0,0 @@
1
- #!/usr/bin/env bash
2
- DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
3
- NODE_BIN="C:\Program Files\nodejs\node.exe"
4
- if [ ! -x "$NODE_BIN" ]; then
5
- NODE_BIN="$(command -v node || true)"
6
- fi
7
- if [ -z "$NODE_BIN" ]; then
8
- echo "Fronti: Node.js not found in PATH" >&2
9
- exit 1
10
- fi
11
- exec "$NODE_BIN" "${DIR}/host.js"