@fronti/core 1.0.0

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 ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export declare function main(): Promise<void>;
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAyHA,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAM1C"}
package/dist/cli.js ADDED
@@ -0,0 +1,100 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.main = main;
8
+ const yargs_1 = __importDefault(require("yargs"));
9
+ const helpers_1 = require("yargs/helpers");
10
+ const run_1 = require("./run");
11
+ const install_1 = require("./install");
12
+ function hasCommandArguments() {
13
+ return process.argv.length > 2;
14
+ }
15
+ function runInstall(platform, runtimeDir, allowedExtensionIds, options = {}) {
16
+ try {
17
+ const result = (0, install_1.installNativeHostRuntime)({
18
+ nativeHostPath: runtimeDir,
19
+ platform,
20
+ allowedExtensionIds
21
+ });
22
+ 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.');
26
+ }
27
+ }
28
+ catch (error) {
29
+ if (options.quiet) {
30
+ console.error('[fronti-native-host] Auto-install failed:', error instanceof Error ? error.message : error);
31
+ }
32
+ else {
33
+ throw error;
34
+ }
35
+ }
36
+ }
37
+ async function runCli() {
38
+ const platform = process.platform;
39
+ await (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv))
40
+ .scriptName('fronti-native-host')
41
+ .command('install', 'Install or update the Fronti native host manifest', (cmd) => cmd
42
+ .option('runtime-dir', {
43
+ type: 'string',
44
+ description: 'Directory to place host runtime files',
45
+ default: (0, install_1.getDefaultRuntimeDir)()
46
+ })
47
+ .option('extensions', {
48
+ type: 'array',
49
+ description: 'Allowed Chrome extension IDs',
50
+ default: ['fjidllehmalodkbffegpihbcfolplneg', 'jojjbmgmggenijlkhjeaiodfoggjcjgj']
51
+ }), (args) => {
52
+ const runtimeDir = args['runtime-dir'];
53
+ const allowed = args.extensions.map((id) => id.trim()).filter(Boolean);
54
+ runInstall(platform, runtimeDir, allowed);
55
+ })
56
+ .command('auto-install', false, (cmd) => cmd
57
+ .option('runtime-dir', {
58
+ type: 'string',
59
+ default: (0, install_1.getDefaultRuntimeDir)()
60
+ })
61
+ .option('extensions', {
62
+ type: 'array',
63
+ default: ['fjidllehmalodkbffegpihbcfolplneg', 'jojjbmgmggenijlkhjeaiodfoggjcjgj']
64
+ }), (args) => {
65
+ const runtimeDir = args['runtime-dir'];
66
+ const allowed = args.extensions.map((id) => id.trim()).filter(Boolean);
67
+ runInstall(platform, runtimeDir, allowed, { quiet: true });
68
+ })
69
+ .command('uninstall', 'Remove the registered Fronti native host manifest', () => { }, () => {
70
+ (0, install_1.uninstallNativeHost)(platform);
71
+ console.log('✔ Native host registration removed.');
72
+ })
73
+ .command('status', 'Show current native host registration', () => { }, () => {
74
+ const manifestPath = (0, install_1.getRegisteredManifestPath)(platform);
75
+ if (!manifestPath) {
76
+ console.log('Native host: not registered.');
77
+ return;
78
+ }
79
+ const executable = (0, install_1.readManifestExecutable)(manifestPath);
80
+ console.log('Native host: registered');
81
+ console.log(`Manifest path: ${manifestPath}`);
82
+ console.log(`Executable: ${executable ?? 'unknown'}`);
83
+ })
84
+ .demandCommand(1)
85
+ .help()
86
+ .parseAsync();
87
+ }
88
+ async function main() {
89
+ if (!hasCommandArguments()) {
90
+ await (0, run_1.runNativeHost)();
91
+ }
92
+ else {
93
+ await runCli();
94
+ }
95
+ }
96
+ main().catch((error) => {
97
+ console.error('[fronti-native-host] Unexpected error:', error);
98
+ process.exit(1);
99
+ });
100
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export declare const NATIVE_HOST_NAME = "com.fronti.core";
2
+ export declare const CONFIG_DIR_NAME = ".fronti";
3
+ export declare const WORKSPACE_CONFIG_FILE = "workspace.json";
4
+ export declare const REGISTRY_PATHS: {
5
+ readonly windows: "HKCU\\Software\\Google\\Chrome\\NativeMessagingHosts\\com.fronti.core";
6
+ readonly darwin: "Library/Application Support/Google/Chrome/NativeMessagingHosts";
7
+ readonly linux: ".config/google-chrome/NativeMessagingHosts";
8
+ };
9
+ export declare const NATIVE_HOST_FILES: {
10
+ readonly windows: "host.bat";
11
+ readonly unix: "host.sh";
12
+ readonly script: "host.js";
13
+ };
14
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,17 @@
1
+ "use strict";
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;
4
+ exports.NATIVE_HOST_NAME = 'com.fronti.core';
5
+ exports.CONFIG_DIR_NAME = '.fronti';
6
+ exports.WORKSPACE_CONFIG_FILE = 'workspace.json';
7
+ exports.REGISTRY_PATHS = {
8
+ windows: `HKCU\\Software\\Google\\Chrome\\NativeMessagingHosts\\${exports.NATIVE_HOST_NAME}`,
9
+ darwin: 'Library/Application Support/Google/Chrome/NativeMessagingHosts',
10
+ linux: '.config/google-chrome/NativeMessagingHosts'
11
+ };
12
+ exports.NATIVE_HOST_FILES = {
13
+ windows: 'host.bat',
14
+ unix: 'host.sh',
15
+ script: 'host.js'
16
+ };
17
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +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"}
@@ -0,0 +1,8 @@
1
+ export { runNativeHost, terminateActiveProcesses } from './run';
2
+ export { installNativeHostRuntime, uninstallNativeHost, getRegisteredManifestPath, readManifestExecutable, getDefaultRuntimeDir } from './install';
3
+ export { ensureRuntimeFiles } from './runtime';
4
+ export { createManifest } from './manifest';
5
+ export { registerNativeHost, unregisterNativeHost } from './registry';
6
+ export * from './constants';
7
+ export type { Platform, NativeHostManifest, InstallOptions, InstallResult } from './types';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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"}
package/dist/index.js ADDED
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
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;
18
+ var run_1 = require("./run");
19
+ Object.defineProperty(exports, "runNativeHost", { enumerable: true, get: function () { return run_1.runNativeHost; } });
20
+ Object.defineProperty(exports, "terminateActiveProcesses", { enumerable: true, get: function () { return run_1.terminateActiveProcesses; } });
21
+ var install_1 = require("./install");
22
+ Object.defineProperty(exports, "installNativeHostRuntime", { enumerable: true, get: function () { return install_1.installNativeHostRuntime; } });
23
+ Object.defineProperty(exports, "uninstallNativeHost", { enumerable: true, get: function () { return install_1.uninstallNativeHost; } });
24
+ Object.defineProperty(exports, "getRegisteredManifestPath", { enumerable: true, get: function () { return install_1.getRegisteredManifestPath; } });
25
+ Object.defineProperty(exports, "readManifestExecutable", { enumerable: true, get: function () { return install_1.readManifestExecutable; } });
26
+ Object.defineProperty(exports, "getDefaultRuntimeDir", { enumerable: true, get: function () { return install_1.getDefaultRuntimeDir; } });
27
+ var runtime_1 = require("./runtime");
28
+ Object.defineProperty(exports, "ensureRuntimeFiles", { enumerable: true, get: function () { return runtime_1.ensureRuntimeFiles; } });
29
+ var manifest_1 = require("./manifest");
30
+ Object.defineProperty(exports, "createManifest", { enumerable: true, get: function () { return manifest_1.createManifest; } });
31
+ var registry_1 = require("./registry");
32
+ Object.defineProperty(exports, "registerNativeHost", { enumerable: true, get: function () { return registry_1.registerNativeHost; } });
33
+ Object.defineProperty(exports, "unregisterNativeHost", { enumerable: true, get: function () { return registry_1.unregisterNativeHost; } });
34
+ __exportStar(require("./constants"), exports);
35
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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"}
@@ -0,0 +1,7 @@
1
+ import type { InstallOptions, InstallResult, Platform } from './types';
2
+ export declare function getDefaultRuntimeDir(): string;
3
+ export declare function installNativeHostRuntime(options: InstallOptions): InstallResult;
4
+ export declare function uninstallNativeHost(platform: Platform): void;
5
+ export declare function getRegisteredManifestPath(platform: Platform): string | null;
6
+ export declare function readManifestExecutable(manifestPath: string): string | null;
7
+ //# sourceMappingURL=install.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.getDefaultRuntimeDir = getDefaultRuntimeDir;
37
+ exports.installNativeHostRuntime = installNativeHostRuntime;
38
+ exports.uninstallNativeHost = uninstallNativeHost;
39
+ exports.getRegisteredManifestPath = getRegisteredManifestPath;
40
+ exports.readManifestExecutable = readManifestExecutable;
41
+ const fs = __importStar(require("fs"));
42
+ const path = __importStar(require("path"));
43
+ const os = __importStar(require("os"));
44
+ const child_process_1 = require("child_process");
45
+ const manifest_1 = require("./manifest");
46
+ const registry_1 = require("./registry");
47
+ const runtime_1 = require("./runtime");
48
+ const constants_1 = require("./constants");
49
+ function getDefaultRuntimeDir() {
50
+ const packageRoot = path.resolve(__dirname, '..');
51
+ return path.join(packageRoot, 'runtime');
52
+ }
53
+ function installNativeHostRuntime(options) {
54
+ const { nativeHostPath, platform, allowedExtensionIds } = options;
55
+ (0, runtime_1.ensureRuntimeFiles)(nativeHostPath, platform);
56
+ const manifestPath = path.join(nativeHostPath, 'manifest.json');
57
+ const manifest = (0, manifest_1.createManifest)(nativeHostPath, platform, allowedExtensionIds);
58
+ fs.writeFileSync(manifestPath, JSON.stringify(manifest, null, 2), { encoding: 'utf8' });
59
+ (0, registry_1.registerNativeHost)(manifestPath, platform);
60
+ return {
61
+ manifestPath,
62
+ usedExisting: false
63
+ };
64
+ }
65
+ function uninstallNativeHost(platform) {
66
+ (0, registry_1.unregisterNativeHost)(platform);
67
+ }
68
+ function getRegisteredManifestPath(platform) {
69
+ try {
70
+ switch (platform) {
71
+ case 'win32': {
72
+ const output = (0, child_process_1.execSync)(`reg query "${constants_1.REGISTRY_PATHS.windows}" /ve`, {
73
+ encoding: 'utf8',
74
+ stdio: ['pipe', 'pipe', 'ignore']
75
+ });
76
+ const match = output.match(/REG_SZ\s+(.*)/);
77
+ return match ? match[1].trim() : null;
78
+ }
79
+ case 'darwin': {
80
+ const manifestPath = path.join(os.homedir(), constants_1.REGISTRY_PATHS.darwin, `${constants_1.NATIVE_HOST_NAME}.json`);
81
+ return fs.existsSync(manifestPath) ? manifestPath : null;
82
+ }
83
+ default: {
84
+ const manifestPath = path.join(os.homedir(), constants_1.REGISTRY_PATHS.linux, `${constants_1.NATIVE_HOST_NAME}.json`);
85
+ return fs.existsSync(manifestPath) ? manifestPath : null;
86
+ }
87
+ }
88
+ }
89
+ catch {
90
+ return null;
91
+ }
92
+ }
93
+ function readManifestExecutable(manifestPath) {
94
+ try {
95
+ const data = fs.readFileSync(manifestPath, 'utf8');
96
+ const manifest = JSON.parse(data);
97
+ return manifest?.path ?? null;
98
+ }
99
+ catch {
100
+ return null;
101
+ }
102
+ }
103
+ //# sourceMappingURL=install.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { NativeHostManifest, Platform } from './types';
2
+ export declare function createManifest(nativeHostPath: string, platform: Platform, allowedExtensionIds?: string[]): NativeHostManifest;
3
+ //# sourceMappingURL=manifest.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.createManifest = createManifest;
37
+ const path = __importStar(require("path"));
38
+ const constants_1 = require("./constants");
39
+ function createManifest(nativeHostPath, platform, allowedExtensionIds) {
40
+ const hostExecutable = platform === 'win32'
41
+ ? path.join(nativeHostPath, constants_1.NATIVE_HOST_FILES.windows)
42
+ : path.join(nativeHostPath, constants_1.NATIVE_HOST_FILES.unix);
43
+ const extensionIds = allowedExtensionIds && allowedExtensionIds.length > 0
44
+ ? allowedExtensionIds
45
+ : ['fjidllehmalodkbffegpihbcfolplneg', 'jojjbmgmggenijlkhjeaiodfoggjcjgj'];
46
+ return {
47
+ name: constants_1.NATIVE_HOST_NAME,
48
+ description: 'Fronti Core - Bridge component for browser, VS Code, and Claude Code',
49
+ path: hostExecutable,
50
+ type: 'stdio',
51
+ allowed_origins: extensionIds.map((id) => `chrome-extension://${id}/`)
52
+ };
53
+ }
54
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +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"}
@@ -0,0 +1,4 @@
1
+ import type { Platform } from './types';
2
+ export declare function registerNativeHost(manifestPath: string, platform: Platform): void;
3
+ export declare function unregisterNativeHost(platform: Platform): void;
4
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAYjF;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAgB7D"}
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.registerNativeHost = registerNativeHost;
37
+ exports.unregisterNativeHost = unregisterNativeHost;
38
+ const path = __importStar(require("path"));
39
+ const fs = __importStar(require("fs"));
40
+ const os = __importStar(require("os"));
41
+ const child_process_1 = require("child_process");
42
+ const constants_1 = require("./constants");
43
+ function registerNativeHost(manifestPath, platform) {
44
+ switch (platform) {
45
+ case 'win32':
46
+ registerWindows(manifestPath);
47
+ break;
48
+ case 'darwin':
49
+ registerMac(manifestPath);
50
+ break;
51
+ default:
52
+ registerLinux(manifestPath);
53
+ break;
54
+ }
55
+ }
56
+ function unregisterNativeHost(platform) {
57
+ try {
58
+ switch (platform) {
59
+ case 'win32':
60
+ unregisterWindows();
61
+ break;
62
+ case 'darwin':
63
+ unregisterMac();
64
+ break;
65
+ default:
66
+ unregisterLinux();
67
+ break;
68
+ }
69
+ }
70
+ catch {
71
+ // Ignore errors during cleanup
72
+ }
73
+ }
74
+ function registerWindows(manifestPath) {
75
+ const regPath = constants_1.REGISTRY_PATHS.windows;
76
+ (0, child_process_1.execSync)(`reg add "${regPath}" /ve /t REG_SZ /d "${manifestPath}" /f`, {
77
+ encoding: 'utf8',
78
+ timeout: 5000,
79
+ windowsHide: true
80
+ });
81
+ }
82
+ function registerMac(manifestPath) {
83
+ const targetDir = path.join(os.homedir(), constants_1.REGISTRY_PATHS.darwin);
84
+ ensureDirectoryExists(targetDir);
85
+ const targetPath = path.join(targetDir, `${constants_1.NATIVE_HOST_NAME}.json`);
86
+ fs.copyFileSync(manifestPath, targetPath);
87
+ }
88
+ function registerLinux(manifestPath) {
89
+ const targetDir = path.join(os.homedir(), constants_1.REGISTRY_PATHS.linux);
90
+ ensureDirectoryExists(targetDir);
91
+ const targetPath = path.join(targetDir, `${constants_1.NATIVE_HOST_NAME}.json`);
92
+ fs.copyFileSync(manifestPath, targetPath);
93
+ }
94
+ function unregisterWindows() {
95
+ const regPath = constants_1.REGISTRY_PATHS.windows;
96
+ try {
97
+ (0, child_process_1.execSync)(`reg delete "${regPath}" /f`, {
98
+ timeout: 2000,
99
+ windowsHide: true,
100
+ stdio: 'ignore'
101
+ });
102
+ }
103
+ catch {
104
+ // Ignore if already removed
105
+ }
106
+ }
107
+ function unregisterMac() {
108
+ const manifestPath = path.join(os.homedir(), constants_1.REGISTRY_PATHS.darwin, `${constants_1.NATIVE_HOST_NAME}.json`);
109
+ try {
110
+ fs.unlinkSync(manifestPath);
111
+ }
112
+ catch {
113
+ // Ignore if already removed
114
+ }
115
+ }
116
+ function unregisterLinux() {
117
+ const manifestPath = path.join(os.homedir(), constants_1.REGISTRY_PATHS.linux, `${constants_1.NATIVE_HOST_NAME}.json`);
118
+ try {
119
+ fs.unlinkSync(manifestPath);
120
+ }
121
+ catch {
122
+ // Ignore if already removed
123
+ }
124
+ }
125
+ function ensureDirectoryExists(dir) {
126
+ if (!fs.existsSync(dir)) {
127
+ fs.mkdirSync(dir, { recursive: true });
128
+ }
129
+ }
130
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
package/dist/run.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ export declare function runNativeHost(): Promise<void>;
2
+ export declare function terminateActiveProcesses(): void;
3
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AA2WA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CA2CnD;AAED,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C"}
package/dist/run.js ADDED
@@ -0,0 +1,378 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.runNativeHost = runNativeHost;
40
+ exports.terminateActiveProcesses = terminateActiveProcesses;
41
+ const child_process_1 = require("child_process");
42
+ const fs_1 = require("fs");
43
+ const os_1 = require("os");
44
+ const path_1 = require("path");
45
+ const readline_1 = __importDefault(require("readline"));
46
+ const CONFIG_DIR = '.ai-visual-editor';
47
+ const WORKSPACE_CONFIG_FILE = 'workspace.json';
48
+ const MESSAGE_HEADER_SIZE = 4;
49
+ const CLAUDE_COMMAND_TIMEOUT = 5000;
50
+ const activeProcesses = new Set();
51
+ let isShuttingDown = false;
52
+ let handlersBound = false;
53
+ function getWorkspacePath() {
54
+ try {
55
+ const configFile = (0, path_1.join)((0, os_1.homedir)(), CONFIG_DIR, WORKSPACE_CONFIG_FILE);
56
+ if ((0, fs_1.existsSync)(configFile)) {
57
+ const data = (0, fs_1.readFileSync)(configFile, 'utf8');
58
+ const config = JSON.parse(data);
59
+ return config.projectPath || null;
60
+ }
61
+ }
62
+ catch (error) {
63
+ logError('Failed to read workspace info', error);
64
+ }
65
+ return null;
66
+ }
67
+ function logError(message, error) {
68
+ const detail = typeof error === 'string' ? error : error?.message || error;
69
+ console.error(`[Error] ${message}:`, detail);
70
+ }
71
+ function logInfo(message) {
72
+ console.error(`[Info] ${message}`);
73
+ }
74
+ function getMessage() {
75
+ const headerBuffer = Buffer.alloc(MESSAGE_HEADER_SIZE);
76
+ const headerBytes = (0, fs_1.readSync)(0, headerBuffer, 0, MESSAGE_HEADER_SIZE, null);
77
+ if (headerBytes !== MESSAGE_HEADER_SIZE) {
78
+ throw new Error('Failed to read message header');
79
+ }
80
+ const messageLength = headerBuffer.readUInt32LE(0);
81
+ logInfo(`Receiving message (${messageLength} bytes)`);
82
+ const messageBuffer = Buffer.alloc(messageLength);
83
+ const messageBytes = (0, fs_1.readSync)(0, messageBuffer, 0, messageLength, null);
84
+ if (messageBytes !== messageLength) {
85
+ throw new Error('Failed to read complete message');
86
+ }
87
+ const message = JSON.parse(messageBuffer.toString());
88
+ logInfo(`Message received: ${message.command}`);
89
+ return message;
90
+ }
91
+ function sendMessage(message) {
92
+ const buffer = Buffer.from(JSON.stringify(message));
93
+ const header = Buffer.alloc(MESSAGE_HEADER_SIZE);
94
+ header.writeUInt32LE(buffer.length, 0);
95
+ process.stdout.write(header);
96
+ process.stdout.write(buffer);
97
+ }
98
+ function buildClaudeArgs(toolPermissions, sessionId, isFirstMessage) {
99
+ const args = ['--print', '--verbose', '--output-format', 'stream-json', '--include-partial-messages'];
100
+ const allPermissionsEnabled = toolPermissions?.read &&
101
+ toolPermissions?.write &&
102
+ toolPermissions?.edit &&
103
+ toolPermissions?.bash &&
104
+ toolPermissions?.grep &&
105
+ toolPermissions?.glob &&
106
+ toolPermissions?.webSearch &&
107
+ toolPermissions?.webFetch;
108
+ if (allPermissionsEnabled) {
109
+ args.push('--dangerously-skip-permissions');
110
+ logInfo('All permissions enabled - using skip permissions');
111
+ }
112
+ else {
113
+ const allowedTools = [];
114
+ if (toolPermissions?.read)
115
+ allowedTools.push('Read');
116
+ if (toolPermissions?.write)
117
+ allowedTools.push('Write');
118
+ if (toolPermissions?.edit) {
119
+ allowedTools.push('Edit');
120
+ allowedTools.push('MultiEdit');
121
+ }
122
+ if (toolPermissions?.bash)
123
+ allowedTools.push('Bash');
124
+ if (toolPermissions?.grep)
125
+ allowedTools.push('Grep');
126
+ if (toolPermissions?.glob)
127
+ allowedTools.push('Glob');
128
+ if (toolPermissions?.webSearch)
129
+ allowedTools.push('WebSearch');
130
+ if (toolPermissions?.webFetch)
131
+ allowedTools.push('WebFetch');
132
+ const allowedToolsStr = allowedTools.length > 0 ? allowedTools.join(',') : 'Read';
133
+ args.push('--allowedTools', allowedToolsStr);
134
+ logInfo(`Selective permissions - allowed tools: ${allowedToolsStr}`);
135
+ }
136
+ if (sessionId) {
137
+ if (isFirstMessage) {
138
+ args.push('--session-id', sessionId);
139
+ logInfo(`Creating new session: ${sessionId}`);
140
+ }
141
+ else {
142
+ args.push('--resume', sessionId);
143
+ logInfo(`Resuming session: ${sessionId}`);
144
+ }
145
+ }
146
+ return args;
147
+ }
148
+ async function executeClaude(prompt, projectPath, sessionId, isFirstMessage, toolPermissions) {
149
+ const claudeArgs = buildClaudeArgs(toolPermissions, sessionId, isFirstMessage);
150
+ logInfo('Executing Claude command');
151
+ logInfo(`Working directory: ${projectPath || process.cwd()}`);
152
+ logInfo(`Prompt length: ${prompt.length} characters`);
153
+ return new Promise((resolve, reject) => {
154
+ const claude = (0, child_process_1.spawn)('claude', claudeArgs, {
155
+ cwd: projectPath || undefined,
156
+ shell: true
157
+ });
158
+ activeProcesses.add(claude);
159
+ claude.stdin.write(prompt);
160
+ claude.stdin.end();
161
+ const rl = readline_1.default.createInterface({
162
+ input: claude.stdout,
163
+ crlfDelay: Infinity
164
+ });
165
+ let finalResult = null;
166
+ rl.on('line', (line) => {
167
+ try {
168
+ const data = JSON.parse(line);
169
+ logInfo(`Stream: ${data.type}${data.subtype ? `/${data.subtype}` : ''}`);
170
+ if (data.type === 'result') {
171
+ finalResult = data;
172
+ logInfo(`Final result: ${data.subtype}, is_error: ${data.is_error}`);
173
+ }
174
+ else {
175
+ sendMessage({
176
+ type: 'stream',
177
+ data
178
+ });
179
+ }
180
+ }
181
+ catch (e) {
182
+ logError('Failed to parse stream line', e);
183
+ }
184
+ });
185
+ claude.stderr.on('data', (data) => {
186
+ logError('Claude stderr', data.toString());
187
+ });
188
+ claude.on('close', (code) => {
189
+ logInfo(`Claude process exited with code ${code}`);
190
+ activeProcesses.delete(claude);
191
+ if (finalResult) {
192
+ sendMessage({
193
+ type: 'complete',
194
+ success: !finalResult.is_error,
195
+ error: finalResult.is_error ? finalResult.error || 'Unknown error' : null,
196
+ result: finalResult.result,
197
+ duration: finalResult.duration_ms,
198
+ usage: finalResult.usage,
199
+ total_cost_usd: finalResult.total_cost_usd,
200
+ modelUsage: finalResult.modelUsage
201
+ });
202
+ }
203
+ else {
204
+ sendMessage({
205
+ type: 'complete',
206
+ success: code === 0,
207
+ error: code !== 0 ? `Process exited with code ${code}` : null
208
+ });
209
+ }
210
+ resolve();
211
+ });
212
+ claude.on('error', (error) => {
213
+ logError('Claude spawn error', error);
214
+ activeProcesses.delete(claude);
215
+ const nodeError = error;
216
+ const errorMessage = nodeError.code === 'ENOENT'
217
+ ? "Claude CLI not found. Please install Claude Code CLI and ensure it's in your PATH."
218
+ : nodeError.message;
219
+ sendMessage({
220
+ type: 'error',
221
+ error: errorMessage
222
+ });
223
+ reject(error);
224
+ });
225
+ });
226
+ }
227
+ async function checkVscExtension() {
228
+ sendMessage({
229
+ type: 'checkResult',
230
+ success: true,
231
+ installed: true
232
+ });
233
+ }
234
+ async function checkClaudeCode() {
235
+ let claudeInstalled = false;
236
+ let claudeVersion = null;
237
+ try {
238
+ const { execSync } = await Promise.resolve().then(() => __importStar(require('child_process')));
239
+ const output = execSync('claude --version', {
240
+ encoding: 'utf8',
241
+ timeout: CLAUDE_COMMAND_TIMEOUT,
242
+ stdio: 'pipe'
243
+ });
244
+ claudeInstalled = true;
245
+ claudeVersion = output.trim();
246
+ }
247
+ catch {
248
+ claudeInstalled = false;
249
+ }
250
+ sendMessage({
251
+ type: 'checkResult',
252
+ success: claudeInstalled,
253
+ installed: claudeInstalled,
254
+ version: claudeVersion,
255
+ error: claudeInstalled ? null : 'Claude Code not found'
256
+ });
257
+ }
258
+ async function checkAll() {
259
+ let claudeInstalled = false;
260
+ let claudeVersion = null;
261
+ try {
262
+ const { execSync } = await Promise.resolve().then(() => __importStar(require('child_process')));
263
+ const output = execSync('claude --version', {
264
+ encoding: 'utf8',
265
+ timeout: CLAUDE_COMMAND_TIMEOUT,
266
+ stdio: 'pipe'
267
+ });
268
+ claudeInstalled = true;
269
+ claudeVersion = output.trim();
270
+ }
271
+ catch {
272
+ claudeInstalled = false;
273
+ }
274
+ const projectPath = getWorkspacePath();
275
+ sendMessage({
276
+ type: 'checkAllResult',
277
+ vscExtension: {
278
+ success: true,
279
+ installed: true
280
+ },
281
+ claudeCode: {
282
+ success: claudeInstalled,
283
+ installed: claudeInstalled,
284
+ version: claudeVersion,
285
+ error: claudeInstalled ? null : 'Claude Code not found'
286
+ },
287
+ projectPath
288
+ });
289
+ }
290
+ function cleanup() {
291
+ if (isShuttingDown)
292
+ return;
293
+ isShuttingDown = true;
294
+ logInfo('Native host shutting down...');
295
+ logInfo(`Terminating ${activeProcesses.size} active processes`);
296
+ activeProcesses.forEach((proc) => {
297
+ try {
298
+ if (!proc.killed) {
299
+ proc.kill('SIGTERM');
300
+ logInfo(`Terminated process: ${proc.pid}`);
301
+ }
302
+ }
303
+ catch (err) {
304
+ logError('Failed to terminate process', err);
305
+ }
306
+ });
307
+ activeProcesses.clear();
308
+ setTimeout(() => {
309
+ process.exit(0);
310
+ }, 100);
311
+ }
312
+ function bindSignalHandlers() {
313
+ if (handlersBound)
314
+ return;
315
+ handlersBound = true;
316
+ process.on('SIGTERM', () => {
317
+ logInfo('Received SIGTERM - shutting down gracefully');
318
+ cleanup();
319
+ });
320
+ process.on('SIGINT', () => {
321
+ logInfo('Received SIGINT - shutting down gracefully');
322
+ cleanup();
323
+ });
324
+ process.on('SIGHUP', () => {
325
+ logInfo('Received SIGHUP - shutting down gracefully');
326
+ cleanup();
327
+ });
328
+ process.stdin.on('end', () => {
329
+ logInfo('Stdin closed - shutting down');
330
+ cleanup();
331
+ });
332
+ process.stdin.on('close', () => {
333
+ logInfo('Stdin stream closed - shutting down');
334
+ cleanup();
335
+ });
336
+ }
337
+ async function runNativeHost() {
338
+ bindSignalHandlers();
339
+ try {
340
+ while (true) {
341
+ const message = getMessage();
342
+ switch (message.command) {
343
+ case 'execute':
344
+ await executeClaude(message.prompt, message.projectPath, message.sessionId, message.isFirstMessage, message.toolPermissions);
345
+ break;
346
+ case 'checkAll':
347
+ await checkAll();
348
+ break;
349
+ case 'checkVscExtension':
350
+ await checkVscExtension();
351
+ break;
352
+ case 'checkClaudeCode':
353
+ await checkClaudeCode();
354
+ break;
355
+ default:
356
+ sendMessage({
357
+ type: 'error',
358
+ error: `Unknown command: ${message.command}`
359
+ });
360
+ }
361
+ }
362
+ }
363
+ catch (error) {
364
+ const err = error;
365
+ if (err.message?.includes('Failed to read')) {
366
+ logInfo('Stdin closed - exiting gracefully');
367
+ cleanup();
368
+ }
369
+ else {
370
+ logError('Fatal error', err);
371
+ process.exit(1);
372
+ }
373
+ }
374
+ }
375
+ function terminateActiveProcesses() {
376
+ cleanup();
377
+ }
378
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Platform } from './types';
2
+ export declare function ensureRuntimeFiles(targetDir: string, platform: Platform): void;
3
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.ensureRuntimeFiles = ensureRuntimeFiles;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const HOST_JS_CONTENT = `#!/usr/bin/env node
40
+ const { runNativeHost } = require('@fronti/native-host');
41
+
42
+ runNativeHost();
43
+ `;
44
+ const HOST_BAT_CONTENT = `@echo off
45
+ node "%~dp0host.js" %*
46
+ `;
47
+ const HOST_SH_CONTENT = `#!/usr/bin/env bash
48
+ DIR="$(cd "$(dirname "\${BASH_SOURCE[0]}")" && pwd)"
49
+ node "\${DIR}/host.js"
50
+ `;
51
+ function ensureRuntimeFiles(targetDir, platform) {
52
+ if (!fs.existsSync(targetDir)) {
53
+ fs.mkdirSync(targetDir, { recursive: true });
54
+ }
55
+ const hostJsPath = path.join(targetDir, 'host.js');
56
+ const hostBatPath = path.join(targetDir, 'host.bat');
57
+ const hostShPath = path.join(targetDir, 'host.sh');
58
+ 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' });
61
+ try {
62
+ fs.chmodSync(hostJsPath, 0o755);
63
+ }
64
+ catch {
65
+ // Ignore
66
+ }
67
+ if (platform !== 'win32') {
68
+ try {
69
+ fs.chmodSync(hostShPath, 0o755);
70
+ }
71
+ catch {
72
+ // Ignore
73
+ }
74
+ }
75
+ }
76
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +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"}
@@ -0,0 +1,18 @@
1
+ export interface NativeHostManifest {
2
+ name: string;
3
+ description: string;
4
+ path: string;
5
+ type: 'stdio';
6
+ allowed_origins: string[];
7
+ }
8
+ export type Platform = 'win32' | 'darwin' | 'linux';
9
+ export interface InstallOptions {
10
+ nativeHostPath: string;
11
+ platform: Platform;
12
+ allowedExtensionIds?: string[];
13
+ }
14
+ export interface InstallResult {
15
+ manifestPath: string;
16
+ usedExisting: boolean;
17
+ }
18
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +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"}
package/dist/types.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "@fronti/core",
3
+ "version": "1.0.0",
4
+ "description": "Core bridge component for Fronti - connects browser, VS Code, and Claude Code.",
5
+ "type": "commonjs",
6
+ "main": "dist/index.js",
7
+ "bin": {
8
+ "fronti-core": "dist/cli.js"
9
+ },
10
+ "files": [
11
+ "dist"
12
+ ],
13
+ "scripts": {
14
+ "build": "tsc -p ./tsconfig.json",
15
+ "clean": "rimraf dist",
16
+ "prepare": "npm run build",
17
+ "postinstall": "node ./dist/cli.js auto-install || true"
18
+ },
19
+ "keywords": [
20
+ "fronti",
21
+ "native-messaging",
22
+ "claude",
23
+ "chrome"
24
+ ],
25
+ "author": "Fronti",
26
+ "license": "MIT",
27
+ "dependencies": {
28
+ "yargs": "^17.7.2"
29
+ },
30
+ "devDependencies": {
31
+ "@types/node": "^20.16.11",
32
+ "@types/yargs": "^17.0.33",
33
+ "rimraf": "^5.0.10",
34
+ "typescript": "^5.6.3"
35
+ }
36
+ }