npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

edino-qb-cli

v0.1.2

Published

Local-first Edino question ingestion and review workspace

Readme

Edino Question Bank CLI

Workspace cục bộ để trích xuất tài liệu, bàn giao prompt cho IDE, tự import questions.json, duyệt rồi gửi Edino theo QuestionSchema.

Bản đang phát triển, core chưa hoàn chỉnh. Có mã cho luồng local nhưng chưa coi Milestone A, các phase trong PLAN.md, toàn bộ tiêu chí release là hoàn tất. Dashboard có luồng chuẩn bị/xác nhận/lịch sử gửi Edino; chưa kiểm chứng với API Edino thật. Package chưa phát hành npm; UNLICENSED trong lúc chờ xác nhận quyền phân phối mã/tài sản sao chép. Không chạy npm publish.

Chạy từ source

Yêu cầu Node.js >=22.13.0 và npm. node:sqlite vẫn là API experimental trong dòng Node hỗ trợ; cảnh báo experimental không đồng nghĩa database bị hỏng. Không dùng thư mục source CLI làm workspace dữ liệu.

npm ci
npm run build
node dist/cli.js --workspace ../my-data start --no-open

--no-open là tùy chọn của start. Mở URL riêng tư in ở terminal; URL chứa launch token dùng một lần. Bỏ --no-open nếu muốn tự mở trình duyệt. Ctrl+C để đóng server/watcher. Nếu build thất bại, dừng và xem lỗi; không dùng bản dist cũ như bằng chứng build thành công.

Lệnh npx edino-question-bank-cli ... chỉ là hình thức dự kiến sau khi được cấp quyền và phát hành; hiện không phải hướng dẫn cài/chạy khả dụng.

Luồng làm việc

  1. Chép TXT/Markdown UTF-8, PDF, DOCX hoặc ảnh vào ../my-data/input/.
  2. Trên Tệp đầu vào, bấm Sao chép prompt (job WAITING_FOR_PROCESSOR).
  3. Dán prompt vào Cursor/IDE. CLI không gọi AI; IDE của bạn có thể gửi dữ liệu lên cloud.
  4. AI ghi output/jobs/<job-id>/questions.json (+ notes.md). CLI đang chạy tự validate/import → READY_FOR_REVIEW.
  5. Mở Duyệt câu hỏi: danh sách theo tên file nguồn; sửa/preview khi cần.
  6. Bấm Duyệt & gửi — mở trang gửi một tệp; chuẩn bị rồi xác nhận. Xem kết quả ở Lịch sử gửi. Chi tiết API: tích hợp Edino.

Workspace data tự có README.md cho người dùng và docs/ai-question-authoring.md, docs/question-schema.md cho AI/processor (kèm ví dụ 12 loại câu hỏi). Khởi động lại để bổ sung file còn thiếu vào workspace cũ; CLI không ghi đè tài liệu đã có. Bộ mẫu nằm trong docs/workspace.

Xem processor integration và schema.

Lệnh local

Chạy trong thư mục source; đường dẫn file bên dưới tính từ thư mục hiện hành:

node dist/cli.js --help
node dist/cli.js --workspace ../my-data doctor
node dist/cli.js --workspace ../my-data status
node dist/cli.js --workspace ../my-data jobs
node dist/cli.js --workspace ../my-data config
node dist/cli.js validate ../my-data/processed.json

Dừng start trước các lệnh ghi offline, hoặc dùng dashboard khi server đang chạy:

node dist/cli.js --workspace ../my-data import ../my-data/processed.json --job <job-id> --title "Bộ câu hỏi"
node dist/cli.js --workspace ../my-data retry <job-id>
node dist/cli.js --workspace ../my-data export <document-id>

Retry offline chỉ đưa job về hàng đợi; cần start để xử lý. Import không gắn job là tài liệu mới, không đảm bảo chống trùng. Import cùng job chỉ trả bản cũ nếu nội dung JSON lưu trữ trùng khớp; nội dung khác gây conflict thay vì ghi đè draft.

Có gì, chưa có gì?

  • Có workspace SQLite, watcher/hash nguồn, trích xuất text, lưu revision, local CRUD/review và export JSON/asset từ job liên kết.
  • Schema/runtime validator có 12 interaction. Điều này không có nghĩa mọi editor/preview đã được kiểm thử UI đầy đủ; cần kiểm tra thực tế từng loại, đặc biệt media/hotspot/drawing/speaking/coding. Không có code runner hay chấm AI.
  • PDF chỉ lấy text chọn được; không OCR/trích ảnh đầy đủ. DOCX giữ media/XML nhưng mất layout/vị trí ảnh/cấu trúc bảng và không bảo đảm OMML. DOC/ZIP không hỗ trợ.
  • Auth qua Account hỗ trợ login email/password, logout và chọn membership/tổ chức khi cấu hình apiBaseUrl. Logout yêu cầu revoke và luôn xóa token local trong finally; lỗi mạng có thể khiến remote revoke chưa được xác nhận. Luồng gửi có snapshot local, xác nhận và lịch sử từng item; capability luôn unknown, API Edino quyết định quyền.
  • Preview dùng KaTeX local với trust=false; công thức lỗi hiển thị cảnh báo/source, HTML tài liệu escaped. Có upload PNG/JPEG/WebP local (server tối đa 5.000.000 bytes), link ảnh vào prompt/resource/hotspot/drawing, sắp xếp/gỡ resourceRefs, so sánh text và tải nguồn. Upload local không phải upload Edino; link cần save để giữ trong JSON.
  • API state phân trang và trả counts toàn workspace; dashboard dùng trang 50 dòng, tìm/lọc trên trang hiện tại. Queue chạy concurrency cấu hình (giới hạn 1–4), lưu input issues bền trong SQLite, có pause/resume. Pause ngừng nhận job extraction tiếp theo, không hủy job đang chạy hay dừng ingest; tắt watcher không ngăn xử lý các job đã queued.
  • Backup/restore offline và UI lịch sử/restore revision đã có. E2E mọi loại câu hỏi, kiểm thử nền tảng chéo, API smoke thật và public release vẫn là các gate chưa hoàn tất. Không có bảo đảm exactly-once remote; kết quả unknown chặn gửi lại cùng document/revision và phải đối chiếu thủ công.
node dist/cli.js --workspace ../my-data backup ../my-backup
node dist/cli.js restore ../my-backup ../restored-data

Backup yêu cầu dừng server; destination phải chưa tồn tại. Restore không khôi phục credential; cần đăng nhập lại.

Dữ liệu và quyền riêng tư

input/, output/, .edino/ đều là dữ liệu riêng. SQLite là nguồn trạng thái chính; export không phải backup database. Không commit/chia sẻ chúng tùy tiện. Terminal có launch token; thông báo lỗi và output có thể chứa đường dẫn, đề thi, đáp án và dữ liệu cá nhân. File credential nếu dùng client tích hợp chứa bí mật không mã hóa: quyền file không bảo vệ trước malware cùng user.

Tài liệu và kiểm tra

npm run typecheck
npm test
npm run build

Các lượt kiểm tra trước trên macOS, Node 22.21.1 đã chạy build/typecheck, tests local, Chromium E2E cơ bản và clean tarball install/start/dashboard/Unicode extraction. Số test và kết quả cuối của thay đổi đang triển khai cần lấy từ lượt chạy mới nhất, không từ tài liệu này. CI Windows/Linux/Node 24 đã khai báo nhưng chưa xác nhận chạy; không suy rộng kết quả macOS sang nền tảng khác. API smoke Edino thật chưa khả dụng; chưa xác nhận end-to-end remote hay mọi editor trong browser. Xem tiến độ/gate chưa hoàn tất trong PLAN.md.

npm run test:web
npm run test:e2e
npm run test:package
npm audit