You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
npm install kernel-script
# hoặc
bun add kernel-script
import{setupKernelScript,createEngineRegistry,useWorker,createTaskStore}from'kernel-script';// 1. Tạo và đăng ký engine của bạnconstregistry=createEngineRegistry();registry.register({keycard: 'my-platform',execute: async(ctx)=>{// Logic tự động hóa của bạn ở đâyreturn{success: true,output: 'Done'};},});// 2. Khởi tạo trong background scriptsetupKernelScript(registry,{debug: true});// 3. Tạo store và sử dụng hook trong ReactconsttaskStore=createTaskStore({name: 'my-tasks'});constTaskQueue=()=>{const{ start, pause, addTask, publishTasks }=useWorker({engine: {keycard: 'my-platform',execute: async(ctx)=>({success: true})},identifier: 'default',funcs: taskStore,});// ...};
import{setupKernelScript,registerEngines,useWorker,createTaskStore}from'kernel-script';// 1. Định nghĩa engine của bạnconstmyEngine={keycard: 'my-platform',execute: async(ctx)=>{// Logic tự động hóa của bạn ở đâyreturn{success: true,output: 'Done'};},};// 2. Khởi tạo trong background scriptsetupKernelScript({'my-platform': myEngine});// 3. Tạo store và sử dụng hook trong ReactconsttaskStore=createTaskStore({name: 'my-tasks'});constTaskQueue=()=>{const{ start, pause, addTask }=useWorker({keycard: 'my-platform',getIdentifier: ()=>'default',funcs: taskStore,});// ...};
Ví dụ
Xem thư mục example/ để xem project hoàn chỉnh sử dụng kernel-script.
DirectManager - Thực thi tác vụ ngay lập tức không qua hàng đợi
Engine Registry - Hệ thống registry mới cho engine
QueueOptions - Callback hooks cho các sự kiện hàng đợi
publishTasks() - Đăng tác vụ local lên hàng đợi
cancelTasks() / skipTaskIds() - Thao tác tác vụ theo batch
setTaskConfig() - Cập nhật cấu hình runtime
Task History - Theo dõi tác vụ đã hoàn thành (tối đa 1000)
Multi-select - Chọn nhiều tác vụ cùng lúc
Tính năng
Quản lý hàng đợi tác vụ - Queue, lên lịch, và thực thi tác vụ với concurrency có thể cấu hình
Xử lý Background - Chạy tác vụ trong Chrome background service workers
Persistence - Trạng thái hàng đợi được lưu qua các lần khởi động extension
React Hooks - Hook useWorker tích hợp sẵn cho React
Hệ thống Engine - Kiến trúc engine có thể mở rộng cho các loại tác vụ khác nhau
Hỗ trợ TypeScript - Hỗ trợ TypeScript đầy đủ với type definitions
Kiến trúc
Luồng dữ liệu
graph LR
A[User] --> B[React Store]
B --> C[sendMessage]
C --> D[QueueManager]
D --> E[EngineHub]
D --> F[PersistenceManager]
E --> G[Engines]
F --> H[IndexedDB]
Loading
Các thành phần
Layer
Component
Mô tả
UI
TaskStore (Zustand)
Quản lý state cục bộ
UI
useWorker Hook
Interface React hook
BG
QueueManager
Lên lịch tác vụ, kiểm soát concurrency
BG
EngineHub
Engine router/registry
BG
PersistenceManager
IndexedDB persistence
BG
Engines
Thực thi tác vụ
Luồng tác vụ
Luồng thực thi tác vụ
graph LR
A[User creates task] --> B[Store.update]
B --> C[sendMessage ADD]
C --> D[QueueManager.add]
D --> E[EngineHub.get]
E --> F[Engine.execute]
F --> G[Result]
G --> H[QUEUE_EVENT]
H --> I[Store.setTasks]
npm install kernel-script
# hoặc
bun add kernel-script
Sử dụng
Thiết lập cơ bản
import{setupKernelScript,createEngineRegistry,typeTaskContext,typeEngineResult,}from'kernel-script';// Định nghĩa engine tùy chỉnh của bạnconstmyEngine={keycard: 'my-platform',asyncexecute(ctx: TaskContext): Promise<EngineResult>{try{consttab=awaitchrome.tabs.create({url: ctx.payload.url});awaitthis.runAutomation(tab.id,ctx);constoutput=awaitthis.getResult(tab.id);return{success: true, output };}catch(error){return{success: false,error: error.message};}},};// Tạo registry và đăng ký engineconstregistry=createEngineRegistry();registry.register(myEngine);// Khởi tạo trong background script của bạnsetupKernelScript(registry,{debug: true});// See: example/src/background.ts
React Hook
import{useWorker,createTaskStore,typeTask}from'kernel-script';// Tạo task storeconsttaskStore=createTaskStore({name: 'my-tasks'});// Sử dụng trong component của bạnfunctionTaskQueue(){const{ start, pause, resume, stop, publishTasks, deleteTasks, retryTasks, cancelTasks, skipTaskIds }=useWorker({engine: {keycard: 'my-platform',execute: async(ctx)=>({success: true})},identifier: 'default',funcs: taskStore,});consthandleAddTasks=(tasks: Task[])=>{publishTasks(tasks);// Thêm tác vụ vào hàng đợi};return(<div><h2>Tasks: {taskStore.getTasks().length}</h2><buttononClick={start}>Start</button><buttononClick={pause}>Pause</button><buttononClick={resume}>Resume</button><buttononClick={stop}>Stop</button></div>);}// See: example/src/hooks/use-task-worker.ts
import{getDirectManager,typeTask,typeEngineResult}from'kernel-script';constdirectManager=getDirectManager();consttask: Task={id: 'task-001',no: 1,name: 'Generate cat image',status: 'Waiting',progress: 0,payload: {url: 'https://example.com'},};constresult: EngineResult=awaitdirectManager.start('my-platform','project-1',task);// Sử dụng thực thi trực tiếp khi không cần quản lý hàng đợi