@nomyx/assistant
Version:
A powerful assistant library and cli for your AI projects. works with Vertex AI (Claude and Gemini)
107 lines (106 loc) • 4.61 kB
JavaScript
;
// LOCKED: TRUE
// All content in this file is locked and cannot be edited.
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const worker_threads_1 = require("worker_threads");
const acorn = __importStar(require("acorn"));
const astring = __importStar(require("astring"));
const eslint_1 = require("eslint");
const estree_walker_1 = require("estree-walker");
if (worker_threads_1.parentPort) {
worker_threads_1.parentPort.on('message', async (message) => {
let result;
try {
switch (message.task) {
case 'parse':
result = {
success: true,
result: acorn.parse(message.data, {
ecmaVersion: message.options?.ecmaVersion || 2020,
sourceType: message.options?.sourceType || 'module'
})
};
break;
case 'walk':
const identifiers = [];
(0, estree_walker_1.walk)(acorn.parse(message.data, { ecmaVersion: 2020, sourceType: 'module' }), {
enter(node) {
if (node.type === 'Identifier') {
identifiers.push(node.name);
}
}
});
result = { success: true, result: identifiers };
case 'generate':
result = {
success: true,
result: astring.generate(JSON.parse(message.data), message.options)
};
break;
case 'format':
result = {
success: true,
result: astring.generate(acorn.parse(message.data, { ecmaVersion: 2020, sourceType: 'module' }), message.options)
};
break;
case 'lint':
const linter = new eslint_1.ESLint();
const messages = await linter.lintText(message.data, message.options);
result = { success: true, result: messages };
break;
case 'transform':
const transformation = new Function('ast', message.data);
const transformedAst = transformation(acorn.parse(message.options?.ast, { ecmaVersion: 2020, sourceType: 'module' }));
result = { success: true, result: astring.generate(transformedAst) };
break;
default:
throw new Error(`Unknown task: ${message.task}`);
}
}
catch (error) {
result = {
success: false,
error: error instanceof Error ? error.message : String(error)
};
}
worker_threads_1.parentPort && worker_threads_1.parentPort.postMessage(result);
});
}
else {
throw new Error('Worker.ts: parentPort is null. This script must be run as a worker.');
}
function handleError(error) {
if (worker_threads_1.parentPort) {
worker_threads_1.parentPort.postMessage({ success: false, error: error.message });
}
else {
console.error('Worker.ts: Unhandled error occurred, but parentPort is null.', error);
}
}
process.on('uncaughtException', handleError);
process.on('unhandledRejection', (reason) => {
handleError(reason instanceof Error ? reason : new Error(String(reason)));
});