import {Meta} from '@storybook/addon-docs/blocks'

<Meta title='@dxtmisha/vi/scripts/Classes/LibraryAiPromptItem - AI Prompt Aggregator Item'/>

# Lớp LibraryAiPromptItem

Lớp `LibraryAiPromptItem` đại diện cho một khối ngữ cảnh của gói hoặc mô-đun riêng lẻ trong quy trình tạo prompt cho AI. Lớp này quản lý việc phát hiện, đọc, ghi nhớ đệm và định dạng các tài nguyên riêng biệt của mô-đun (như mô tả, siêu dữ liệu, kiểu dữ liệu TypeScript và danh sách ảnh chụp màn hình UI) thành một phần ngữ cảnh có cấu trúc chặt chẽ.

## Tính năng chính

- **Phát hiện Ngữ cảnh Mô-đun** — tự động kiểm tra sự tồn tại của các tệp mô tả, siêu dữ liệu, kiểu dữ liệu và ảnh chụp màn hình bên trong thư mục con của mô-đun.
- **Phân tích Manifest của Gói** — tải và phân tích tệp `package.json` của mô-đun để trích xuất tên dự án chính thức.
- **Đóng gói Nội dung có Cấu trúc** — hợp nhất các tệp phát hiện được thành một đầu ra markdown gọn gàng mô tả chi tiết vị trí, mục đích, kiểu dữ liệu và tài nguyên hình ảnh.
- **Chuẩn hóa Đường dẫn Linh hoạt** — chuyển đổi các đường dẫn tương đối trong các tệp hướng dẫn thô thành các đường dẫn tuyệt đối tương ứng trong dự án.
- **Ghi nhớ đệm Tài nguyên Thông minh** — lưu cache nội dung của tệp `package.json` trong bộ nhớ của đối tượng để tránh việc đọc đĩa lặp lại không cần thiết.

## Khởi tạo

`LibraryAiPromptItem` được khởi tạo bằng một mảng chứa các phân đoạn đường dẫn trỏ đến thư mục của mô-đun đích.

**Tham số khởi tạo:**
- `dir: string[]` — Các phân đoạn đường dẫn thư mục mô-đun (ví dụ: `['packages', 'scripts']`).

```typescript
import { LibraryAiPromptItem } from '@dxtmisha/scripts'

const item = new LibraryAiPromptItem(['packages', 'scripts'])
```

---

## Phương thức

### Thực thi

#### `make`
Phương thức điều phối cốt lõi: kiểm tra trạng thái của từng loại tài nguyên (mô tả, thông tin, kiểu dữ liệu, ảnh chụp màn hình), tổng hợp tất cả các tệp hiện có và định dạng chúng thành một khối markdown thống nhất cho mô-đun.

**Trả về:** `string | undefined`

```typescript
const promptBlock = item.make()
```

---

### Phương thức Kiểm tra Trạng thái
Tất cả các phương thức kiểm tra trạng thái đều trả về kiểu dữ liệu `boolean`.
- `isPrompt()` — Trả về `true` nếu tồn tại *bất kỳ* tài nguyên nào của mô-đun (như mô tả, thông tin, kiểu dữ liệu hoặc ảnh chụp màn hình).
- `isDescription()` — Xác minh xem tệp `description.txt` có tồn tại hay không.
- `isInfo()` — Xác minh xem tệp `info.txt` có tồn tại hay không.
- `isTypes()` — Xác minh xem tệp `ai-types.txt` có tồn tại hay không.
- `isScreenshot()` — Xác minh xem thư mục `ai-screenshot` có tồn tại hay không.

---

### Phương thức Trợ giúp Công khai & Bảo vệ (Protected)
- `getProjectName(): string` — Đọc tên dự án từ tệp cấu hình `package.json` cục bộ.
- `getPath(dirFile: string): string[]` — Trả về mảng phân đoạn đường dẫn đầy đủ cho tệp được chỉ định trong thư mục mô-đun.
- `getPathString(): string` — Trả về chuỗi đường dẫn mô-đun được liên kết bằng dấu gạch chéo.
- `getPackageJson(): Record<string, any>` — Đọc và lưu trữ cache nội dung tệp `package.json`.
- `readFile(dirFile: string): string` — Đọc nội dung tệp được chỉ định, cập nhật các tham chiếu đường dẫn tương thích với cấu trúc tuyệt đối của dự án.
- `getDescription(): string | undefined` — Định dạng phần mô tả mô-đun nếu tồn tại.
- `getInfo(): string | undefined` — Định dạng phần tổng quan cốt lõi mô-đun nếu tồn tại.
- `getTypes(): string | undefined` — Định dạng các liên kết định nghĩa kiểu dữ liệu của mô-đun nếu tồn tại.
- `getScreenshot(): string | undefined` — Định dạng các liên kết tài nguyên hình ảnh và danh sách ảnh chụp màn hình nếu tồn tại.
- `getScreenshotList(): string[] | undefined` — Trả về danh sách tên tệp hình ảnh trong thư mục `ai-screenshot`.
