@fronti/core 1.0.4 → 1.0.6

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',
@@ -47,20 +62,27 @@ async function runCli() {
47
62
  .option('extensions', {
48
63
  type: 'array',
49
64
  description: 'Allowed Chrome extension IDs',
50
- default: ['fjidllehmalodkbffegpihbcfolplneg', 'jojjbmgmggenijlkhjeaiodfoggjcjgj']
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)()
60
82
  })
61
83
  .option('extensions', {
62
84
  type: 'array',
63
- default: ['fjidllehmalodkbffegpihbcfolplneg', 'jojjbmgmggenijlkhjeaiodfoggjcjgj']
85
+ default: ['jojjbmgmggenijlkhjeaiodfoggjcjgj']
64
86
  }), (args) => {
65
87
  const runtimeDir = args['runtime-dir'];
66
88
  const allowed = args.extensions.map((id) => id.trim()).filter(Boolean);
@@ -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.6";
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.6';
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":"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"}
@@ -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
@@ -42,13 +42,14 @@ function createManifest(nativeHostPath, platform, allowedExtensionIds) {
42
42
  : path.join(nativeHostPath, constants_1.NATIVE_HOST_FILES.unix);
43
43
  const extensionIds = allowedExtensionIds && allowedExtensionIds.length > 0
44
44
  ? allowedExtensionIds
45
- : ['fjidllehmalodkbffegpihbcfolplneg', 'jojjbmgmggenijlkhjeaiodfoggjcjgj'];
45
+ : ['jojjbmgmggenijlkhjeaiodfoggjcjgj'];
46
46
  return {
47
47
  name: constants_1.NATIVE_HOST_NAME,
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,EAAE,kCAAkC,CAAC,CAAC;IAE/E,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;AAiBxC,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CA0B9E"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAiIxC,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CA+B9E"}
package/dist/runtime.js CHANGED
@@ -36,18 +36,126 @@ 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
+ /**
40
+ * Host.js content - uses relative path to dist folder
41
+ * which will be copied alongside host.js
42
+ */
39
43
  const HOST_JS_CONTENT = `#!/usr/bin/env node
40
- const { runNativeHost } = require('@fronti/core');
44
+ const { runNativeHost } = require('./dist/index.js');
41
45
 
42
46
  runNativeHost();
43
47
  `;
44
- const HOST_BAT_CONTENT = `@echo off
45
- node "%~dp0host.js" %*
48
+ /**
49
+ * Windows batch file - dynamically finds Node.js
50
+ * Priority: 1) Common install paths, 2) PATH lookup
51
+ */
52
+ function buildHostBat() {
53
+ return `@echo off
54
+ setlocal enabledelayedexpansion
55
+
56
+ REM Try common Node.js installation paths first
57
+ set "NODE_PATHS=C:\\Program Files\\nodejs\\node.exe;C:\\Program Files (x86)\\nodejs\\node.exe;%LOCALAPPDATA%\\Programs\\nodejs\\node.exe;%APPDATA%\\nvm\\current\\node.exe"
58
+
59
+ for %%p in (%NODE_PATHS%) do (
60
+ if exist "%%p" (
61
+ set "NODE_BIN=%%p"
62
+ goto :found
63
+ )
64
+ )
65
+
66
+ REM Fall back to PATH lookup
67
+ where node >nul 2>&1
68
+ if %ERRORLEVEL% equ 0 (
69
+ for /f "delims=" %%i in ('where node') do (
70
+ set "NODE_BIN=%%i"
71
+ goto :found
72
+ )
73
+ )
74
+
75
+ echo Fronti: Node.js not found. Please install Node.js 18+ >&2
76
+ exit /b 1
77
+
78
+ :found
79
+ "%NODE_BIN%" "%~dp0host.js" %*
46
80
  `;
47
- const HOST_SH_CONTENT = `#!/usr/bin/env bash
81
+ }
82
+ /**
83
+ * Unix shell script - dynamically finds Node.js
84
+ * Priority: 1) PATH lookup, 2) Common install paths
85
+ */
86
+ function buildHostSh() {
87
+ return `#!/usr/bin/env bash
88
+ set -e
89
+
48
90
  DIR="$(cd "$(dirname "\${BASH_SOURCE[0]}")" && pwd)"
49
- node "\${DIR}/host.js"
91
+
92
+ # Try to find Node.js dynamically
93
+ find_node() {
94
+ # First try PATH
95
+ if command -v node >/dev/null 2>&1; then
96
+ command -v node
97
+ return 0
98
+ fi
99
+
100
+ # Try common installation paths
101
+ local paths=(
102
+ "/usr/local/bin/node"
103
+ "/usr/bin/node"
104
+ "$HOME/.nvm/current/bin/node"
105
+ "$HOME/.volta/bin/node"
106
+ "$HOME/.asdf/shims/node"
107
+ "/opt/homebrew/bin/node"
108
+ )
109
+
110
+ for p in "\${paths[@]}"; do
111
+ if [ -x "$p" ]; then
112
+ echo "$p"
113
+ return 0
114
+ fi
115
+ done
116
+
117
+ # Try nvm if available
118
+ if [ -f "$HOME/.nvm/nvm.sh" ]; then
119
+ source "$HOME/.nvm/nvm.sh" >/dev/null 2>&1
120
+ if command -v node >/dev/null 2>&1; then
121
+ command -v node
122
+ return 0
123
+ fi
124
+ fi
125
+
126
+ return 1
127
+ }
128
+
129
+ NODE_BIN="$(find_node)" || {
130
+ echo "Fronti: Node.js not found. Please install Node.js 18+" >&2
131
+ exit 1
132
+ }
133
+
134
+ exec "$NODE_BIN" "\${DIR}/host.js"
50
135
  `;
136
+ }
137
+ /**
138
+ * Copy the dist folder to target directory
139
+ */
140
+ function copyDistFolder(targetDir) {
141
+ const sourceDistDir = path.resolve(__dirname);
142
+ const targetDistDir = path.join(targetDir, 'dist');
143
+ if (!fs.existsSync(targetDistDir)) {
144
+ fs.mkdirSync(targetDistDir, { recursive: true });
145
+ }
146
+ // Copy all .js files from source dist to target dist
147
+ const files = fs.readdirSync(sourceDistDir);
148
+ for (const file of files) {
149
+ if (file.endsWith('.js') || file.endsWith('.json')) {
150
+ const sourcePath = path.join(sourceDistDir, file);
151
+ const targetPath = path.join(targetDistDir, file);
152
+ // Only copy files, not directories
153
+ if (fs.statSync(sourcePath).isFile()) {
154
+ fs.copyFileSync(sourcePath, targetPath);
155
+ }
156
+ }
157
+ }
158
+ }
51
159
  function ensureRuntimeFiles(targetDir, platform) {
52
160
  if (!fs.existsSync(targetDir)) {
53
161
  fs.mkdirSync(targetDir, { recursive: true });
@@ -55,14 +163,18 @@ function ensureRuntimeFiles(targetDir, platform) {
55
163
  const hostJsPath = path.join(targetDir, 'host.js');
56
164
  const hostBatPath = path.join(targetDir, 'host.bat');
57
165
  const hostShPath = path.join(targetDir, 'host.sh');
166
+ // Write host files with dynamic Node.js resolution
58
167
  fs.writeFileSync(hostJsPath, HOST_JS_CONTENT, { encoding: 'utf8' });
59
- fs.writeFileSync(hostBatPath, HOST_BAT_CONTENT, { encoding: 'utf8' });
60
- fs.writeFileSync(hostShPath, HOST_SH_CONTENT, { encoding: 'utf8' });
168
+ fs.writeFileSync(hostBatPath, buildHostBat(), { encoding: 'utf8' });
169
+ fs.writeFileSync(hostShPath, buildHostSh(), { encoding: 'utf8' });
170
+ // Copy dist folder so host.js can require it
171
+ copyDistFolder(targetDir);
172
+ // Set executable permissions
61
173
  try {
62
174
  fs.chmodSync(hostJsPath, 0o755);
63
175
  }
64
176
  catch {
65
- // Ignore
177
+ // Ignore permission errors on Windows
66
178
  }
67
179
  if (platform !== 'win32') {
68
180
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBA,gDA0BC;AA7CD,uCAAyB;AACzB,2CAA6B;AAG7B,MAAM,eAAe,GAAG;;;;CAIvB,CAAC;AAEF,MAAM,gBAAgB,GAAG;;CAExB,CAAC;AAEF,MAAM,eAAe,GAAG;;;CAGvB,CAAC;AAEF,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,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,gBAAgB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IACtE,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,eAAe,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAEpE,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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmIA,gDA+BC;AAlKD,uCAAyB;AACzB,2CAA6B;AAG7B;;;GAGG;AACH,MAAM,eAAe,GAAG;;;;CAIvB,CAAC;AAEF;;;GAGG;AACH,SAAS,YAAY;IACnB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BR,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,SAAS,WAAW;IAClB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgDR,CAAC;AACF,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,SAAiB;IACvC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC9C,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAEnD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAClC,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,qDAAqD;IACrD,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IAC5C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACnD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YAClD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YAElD,mCAAmC;YACnC,IAAI,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;gBACrC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;IACH,CAAC;AACH,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,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,mDAAmD;IACnD,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,eAAe,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IACpE,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IACpE,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAElE,6CAA6C;IAC7C,cAAc,CAAC,SAAS,CAAC,CAAC;IAE1B,6BAA6B;IAC7B,IAAI,CAAC;QACH,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,sCAAsC;IACxC,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"}
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.4",
3
+ "version": "1.0.6",
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,2 +0,0 @@
1
- @echo off
2
- node "%~dp0host.js" %*
package/runtime/host.js DELETED
@@ -1,4 +0,0 @@
1
- #!/usr/bin/env node
2
- const { runNativeHost } = require('@fronti/native-host');
3
-
4
- runNativeHost();
package/runtime/host.sh DELETED
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env bash
2
- DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
3
- node "${DIR}/host.js"