viepilot 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.
Files changed (84) hide show
  1. package/CHANGELOG.md +230 -0
  2. package/LICENSE +23 -0
  3. package/README.md +550 -0
  4. package/bin/viepilot.cjs +222 -0
  5. package/bin/vp-tools.cjs +912 -0
  6. package/dev-install.sh +109 -0
  7. package/docs/README.md +125 -0
  8. package/docs/advanced-usage.md +366 -0
  9. package/docs/api/README.md +12 -0
  10. package/docs/api/graphql-schema.md +5 -0
  11. package/docs/api/kafka-events.md +5 -0
  12. package/docs/api/rest-api.md +19 -0
  13. package/docs/api/websocket-api.md +5 -0
  14. package/docs/dev/architecture.md +226 -0
  15. package/docs/dev/cli-reference.md +324 -0
  16. package/docs/dev/contributing.md +195 -0
  17. package/docs/dev/deployment.md +204 -0
  18. package/docs/dev/getting-started.md +16 -0
  19. package/docs/dev/testing.md +171 -0
  20. package/docs/dev/ui-components-library.md +36 -0
  21. package/docs/getting-started.md +163 -0
  22. package/docs/skills-reference.md +399 -0
  23. package/docs/troubleshooting.md +297 -0
  24. package/docs/user/faq.md +117 -0
  25. package/docs/user/features/autonomous-mode.md +111 -0
  26. package/docs/user/features/checkpoint-recovery.md +76 -0
  27. package/docs/user/features/debug-mode.md +77 -0
  28. package/docs/user/features/ui-direction.md +29 -0
  29. package/docs/user/quick-start.md +157 -0
  30. package/docs/videos/01-installation.md +113 -0
  31. package/docs/videos/02-first-project.md +132 -0
  32. package/docs/videos/03-autonomous-mode.md +147 -0
  33. package/install.sh +144 -0
  34. package/lib/cli-shared.cjs +108 -0
  35. package/package.json +78 -0
  36. package/skills/vp-audit/SKILL.md +140 -0
  37. package/skills/vp-auto/SKILL.md +204 -0
  38. package/skills/vp-brainstorm/SKILL.md +75 -0
  39. package/skills/vp-crystallize/SKILL.md +175 -0
  40. package/skills/vp-debug/SKILL.md +96 -0
  41. package/skills/vp-docs/SKILL.md +258 -0
  42. package/skills/vp-evolve/SKILL.md +165 -0
  43. package/skills/vp-pause/SKILL.md +150 -0
  44. package/skills/vp-request/SKILL.md +250 -0
  45. package/skills/vp-resume/SKILL.md +141 -0
  46. package/skills/vp-rollback/SKILL.md +116 -0
  47. package/skills/vp-status/SKILL.md +137 -0
  48. package/skills/vp-task/SKILL.md +139 -0
  49. package/skills/vp-ui-components/SKILL.md +64 -0
  50. package/templates/phase/PHASE-STATE.md +35 -0
  51. package/templates/phase/SPEC.md +40 -0
  52. package/templates/phase/SUMMARY.md +67 -0
  53. package/templates/phase/TASK.md +101 -0
  54. package/templates/phase/VERIFICATION.md +49 -0
  55. package/templates/project/AI-GUIDE.md +114 -0
  56. package/templates/project/ARCHITECTURE.md +70 -0
  57. package/templates/project/CHANGELOG.md +36 -0
  58. package/templates/project/CONTRIBUTING.md +154 -0
  59. package/templates/project/CONTRIBUTORS.md +41 -0
  60. package/templates/project/PROJECT-CONTEXT.md +74 -0
  61. package/templates/project/PROJECT-META.md +133 -0
  62. package/templates/project/README.md +197 -0
  63. package/templates/project/ROADMAP.md +56 -0
  64. package/templates/project/SYSTEM-RULES.md +368 -0
  65. package/templates/project/TRACKER.md +50 -0
  66. package/ui-components/INDEX.md +9 -0
  67. package/ui-components/base/button/README.md +8 -0
  68. package/ui-components/base/button/metadata.json +8 -0
  69. package/ui-components/base/card/README.md +8 -0
  70. package/ui-components/base/card/metadata.json +8 -0
  71. package/ui-components/base/input/README.md +8 -0
  72. package/ui-components/base/input/metadata.json +8 -0
  73. package/workflows/audit.md +549 -0
  74. package/workflows/autonomous.md +425 -0
  75. package/workflows/brainstorm.md +257 -0
  76. package/workflows/crystallize.md +418 -0
  77. package/workflows/debug.md +241 -0
  78. package/workflows/documentation.md +587 -0
  79. package/workflows/evolve.md +258 -0
  80. package/workflows/pause-work.md +255 -0
  81. package/workflows/request.md +534 -0
  82. package/workflows/resume-work.md +226 -0
  83. package/workflows/rollback.md +202 -0
  84. package/workflows/ui-components.md +109 -0
@@ -0,0 +1,163 @@
1
+ # Getting Started with ViePilot
2
+
3
+ ## Overview
4
+
5
+ ViePilot là một framework giúp bạn phát triển dự án với AI một cách có hệ thống và kiểm soát.
6
+
7
+ ## Workflow Overview
8
+
9
+ ```
10
+ ┌─────────────┐ ┌──────────────┐ ┌──────────┐
11
+ │ /brainstorm │ ──► │ /crystallize │ ──► │ /vp-auto │
12
+ └─────────────┘ └──────────────┘ └──────────┘
13
+ │ │ │
14
+ ▼ ▼ ▼
15
+ Ideas & Artifacts Working
16
+ Decisions & Roadmap Code
17
+ ```
18
+
19
+ ## Step 1: Install ViePilot
20
+
21
+ ```bash
22
+ # Clone repository
23
+ git clone https://github.com/0-CODE/viepilot.git
24
+
25
+ # Run installation
26
+ cd viepilot
27
+ ./install.sh
28
+ ```
29
+
30
+ ## Step 2: Brainstorm Your Project
31
+
32
+ Start a new project by brainstorming:
33
+
34
+ ```
35
+ /vp-brainstorm
36
+ ```
37
+
38
+ The AI will guide you through:
39
+ - Project goals and requirements
40
+ - Architecture decisions
41
+ - Technology choices
42
+ - Feature breakdown
43
+
44
+ Sessions are saved to `docs/brainstorm/session-*.md`
45
+
46
+ ## Step 3: Crystallize into Artifacts
47
+
48
+ Transform your brainstorm into actionable artifacts:
49
+
50
+ ```
51
+ /vp-crystallize
52
+ ```
53
+
54
+ You'll be asked for project metadata:
55
+ - Project name and description
56
+ - Organization info
57
+ - Package Base ID (e.g., `com.company.project`)
58
+ - Lead developer info
59
+ - License choice
60
+
61
+ This creates:
62
+ ```
63
+ .viepilot/
64
+ ├── AI-GUIDE.md # Navigation for AI
65
+ ├── PROJECT-META.md # Project metadata
66
+ ├── ARCHITECTURE.md # System design
67
+ ├── PROJECT-CONTEXT.md # Domain knowledge
68
+ ├── SYSTEM-RULES.md # Coding standards
69
+ ├── ROADMAP.md # Development plan
70
+ ├── TRACKER.md # Progress tracking
71
+ └── phases/ # Phase directories
72
+ ```
73
+
74
+ ## Step 4: Autonomous Development
75
+
76
+ Start autonomous coding:
77
+
78
+ ```
79
+ /vp-auto
80
+ ```
81
+
82
+ The AI will:
83
+ 1. Pick up the first/next task
84
+ 2. Load relevant context
85
+ 3. Implement according to specs
86
+ 4. Verify against acceptance criteria
87
+ 5. Commit with proper format
88
+ 6. Move to next task
89
+
90
+ ### Control Points
91
+
92
+ The AI pauses for your input when:
93
+ - Conflicts detected with existing code
94
+ - Quality gate failures
95
+ - User decision needed
96
+ - Blockers encountered
97
+
98
+ ## Step 5: Pause and Resume
99
+
100
+ Need to stop? Save your state:
101
+
102
+ ```
103
+ /vp-pause
104
+ ```
105
+
106
+ Later, continue seamlessly:
107
+
108
+ ```
109
+ /vp-resume
110
+ ```
111
+
112
+ All context is preserved in `HANDOFF.json` and `.continue-here.md`.
113
+
114
+ ## Step 6: Check Progress
115
+
116
+ View dashboard anytime:
117
+
118
+ ```
119
+ /vp-status
120
+ ```
121
+
122
+ ## Step 7: Evolve Your Project
123
+
124
+ Add features or start new milestone:
125
+
126
+ ```
127
+ /vp-evolve
128
+ ```
129
+
130
+ Options:
131
+ 1. Add Feature - New feature to current milestone
132
+ 2. New Milestone - Archive current, start fresh
133
+ 3. Refactor - Improve existing code
134
+
135
+ ## Step 8: Generate Documentation
136
+
137
+ Create comprehensive docs:
138
+
139
+ ```
140
+ /vp-docs
141
+ ```
142
+
143
+ Generates API docs, developer guide, user guide.
144
+
145
+ ## Quick Reference
146
+
147
+ | Command | Description |
148
+ |---------|-------------|
149
+ | `/vp-brainstorm` | Start brainstorm session |
150
+ | `/vp-crystallize` | Create project artifacts |
151
+ | `/vp-auto` | Run autonomous development |
152
+ | `/vp-pause` | Save state and pause |
153
+ | `/vp-resume` | Continue from pause |
154
+ | `/vp-status` | View progress dashboard |
155
+ | `/vp-evolve` | Add features/milestone |
156
+ | `/vp-docs` | Generate documentation |
157
+ | `/vp-task` | Manual task management |
158
+
159
+ ## Next Steps
160
+
161
+ - Read [Skills Reference](skills-reference.md) for detailed command options
162
+ - Read [Workflows Guide](workflows-guide.md) for customization
163
+ - Read [Templates Guide](templates-guide.md) for template modification
@@ -0,0 +1,399 @@
1
+ # Skills Reference
2
+
3
+ Complete reference for all ViePilot skills.
4
+
5
+ ---
6
+
7
+ ## /vp-brainstorm
8
+
9
+ **Purpose**: Thu thập ý tưởng, requirements, quyết định cho dự án
10
+
11
+ ### Flags
12
+ | Flag | Description |
13
+ |------|-------------|
14
+ | `--new` | Force tạo session mới |
15
+ | `--continue` | Tiếp tục session gần nhất |
16
+ | `--list` | Liệt kê các sessions |
17
+
18
+ ### In-Session Commands
19
+ | Command | Description |
20
+ |---------|-------------|
21
+ | `/topic {name}` | Chuyển sang topic mới |
22
+ | `/summary` | Xem tóm tắt hiện tại |
23
+ | `/save` | Lưu tiến độ |
24
+ | `/end` | Kết thúc và lưu |
25
+ | `/questions` | Xem open questions |
26
+
27
+ ### Output
28
+ - `docs/brainstorm/session-{YYYY-MM-DD}.md`
29
+
30
+ ---
31
+
32
+ ## /vp-crystallize
33
+
34
+ **Purpose**: Chuyển đổi brainstorm thành executable artifacts
35
+
36
+ ### Metadata Collection
37
+ - Project name, description
38
+ - Organization name, website
39
+ - Package Base ID
40
+ - Maven Group ID, Artifact ID
41
+ - Lead developer info
42
+ - Repository URL
43
+ - License
44
+ - Inception year
45
+
46
+ ### Output
47
+ ```
48
+ .viepilot/
49
+ ├── AI-GUIDE.md
50
+ ├── PROJECT-META.md
51
+ ├── ARCHITECTURE.md
52
+ ├── PROJECT-CONTEXT.md
53
+ ├── SYSTEM-RULES.md
54
+ ├── ROADMAP.md
55
+ ├── TRACKER.md
56
+ ├── HANDOFF.json
57
+ ├── schemas/
58
+ │ ├── database-schema.sql
59
+ │ ├── kafka-topics.yaml
60
+ │ └── api-contracts.yaml
61
+ └── phases/
62
+ └── {NN}-{phase-slug}/
63
+ ├── SPEC.md
64
+ ├── PHASE-STATE.md
65
+ └── tasks/
66
+
67
+ CHANGELOG.md
68
+ CONTRIBUTING.md
69
+ CONTRIBUTORS.md
70
+ LICENSE
71
+ README.md
72
+ ```
73
+
74
+ ---
75
+
76
+ ## /vp-auto
77
+
78
+ **Purpose**: Autonomous execution của phases và tasks
79
+
80
+ ### Flags
81
+ | Flag | Description |
82
+ |------|-------------|
83
+ | `--from N` | Start từ phase N |
84
+ | `--phase N` | Chỉ chạy phase N |
85
+ | `--fast` | Skip optional verifications (fewer pauses; required checks in task docs remain) |
86
+ | `--dry-run` | Plan only, no execution |
87
+
88
+ ### Không có flag thêm / No extra args
89
+ Gọi `/vp-auto` đúng nghĩa là không bật các cờ trên — **không** phải rule “mỗi task phải stop” trong workflow. Trong thực tế chat, một turn thường hoàn thành ~một task hoặc dừng tại control point; chạy tiếp bằng lượt sau hoặc nhắc phase/task kế. Xem [Autonomous mode](../user/features/autonomous-mode.md).
90
+
91
+ ### Execution Flow
92
+ ```
93
+ For each phase:
94
+ For each task:
95
+ 1. Load context
96
+ 2. Create git tag
97
+ 3. Execute implementation
98
+ 4. Verify results
99
+ 5. Handle outcome (pass/fail)
100
+ 6. Update state
101
+ Mark phase complete
102
+ ```
103
+
104
+ ### Control Points
105
+ AI pauses for user input when:
106
+ - Conflicts detected
107
+ - Quality gate failure
108
+ - User decision needed
109
+ - Blocker encountered
110
+
111
+ ### Git Tags
112
+ - `vp-p{phase}-t{task}` - Task started
113
+ - `vp-p{phase}-t{task}-done` - Task completed
114
+ - `vp-p{phase}-complete` - Phase completed
115
+
116
+ ---
117
+
118
+ ## /vp-pause
119
+
120
+ **Purpose**: Save state để resume sau
121
+
122
+ ### Output
123
+ - `.viepilot/HANDOFF.json` - Machine-readable state
124
+ - `.viepilot/phases/{phase}/.continue-here.md` - Human-readable context
125
+ - Git WIP commit
126
+
127
+ ### State Captured
128
+ - Current position (phase, task)
129
+ - Work completed
130
+ - Work remaining
131
+ - Decisions made
132
+ - Blockers
133
+ - Human actions pending
134
+ - Uncommitted files
135
+ - Context notes
136
+
137
+ ---
138
+
139
+ ## /vp-resume
140
+
141
+ **Purpose**: Restore context và continue
142
+
143
+ ### Recovery Sources
144
+ 1. `HANDOFF.json` (preferred)
145
+ 2. `TRACKER.md` (fallback)
146
+ 3. `.continue-here.md` (human context)
147
+
148
+ ### Options Offered
149
+ 1. Continue from current task
150
+ 2. Restart current task
151
+ 3. Skip to next task
152
+ 4. View task details
153
+ 5. Run `/vp-status`
154
+ 6. Start `/vp-auto`
155
+
156
+ ---
157
+
158
+ ## /vp-status
159
+
160
+ **Purpose**: Display progress dashboard
161
+
162
+ ### Display Includes
163
+ - Phase progress bars
164
+ - Current state
165
+ - Quality metrics
166
+ - Decisions & blockers
167
+ - Next actions
168
+
169
+ ---
170
+
171
+ ## /vp-evolve
172
+
173
+ **Purpose**: Nâng cấp hoặc mở rộng dự án
174
+
175
+ ### Modes
176
+ | Mode | Description |
177
+ |------|-------------|
178
+ | Add Feature | Thêm feature vào milestone hiện tại |
179
+ | New Milestone | Archive current, start new |
180
+ | Refactor | Improve code without features |
181
+
182
+ ### Version Bump
183
+ | Mode | Bump |
184
+ |------|------|
185
+ | Add Feature | MINOR |
186
+ | New Milestone | MAJOR/MINOR |
187
+ | Refactor | PATCH |
188
+
189
+ ---
190
+
191
+ ## /vp-docs
192
+
193
+ **Purpose**: Generate documentation
194
+
195
+ ### Flags
196
+ | Flag | Description |
197
+ |------|-------------|
198
+ | `--all` | Generate all documentation |
199
+ | `--api` | API documentation only |
200
+ | `--dev` | Developer guide only |
201
+ | `--user` | User guide only |
202
+ | `--changelog` | Update changelog only |
203
+
204
+ ### Output
205
+ ```
206
+ docs/
207
+ ├── api/
208
+ │ ├── rest-api.md
209
+ │ ├── graphql-schema.md
210
+ │ ├── kafka-events.md
211
+ │ └── websocket-api.md
212
+ ├── dev/
213
+ │ ├── getting-started.md
214
+ │ ├── architecture.md
215
+ │ ├── contributing.md
216
+ │ ├── testing.md
217
+ │ └── deployment.md
218
+ ├── user/
219
+ │ ├── quick-start.md
220
+ │ └── features/
221
+ └── README.md
222
+
223
+ CHANGELOG.md (updated)
224
+ ```
225
+
226
+ ---
227
+
228
+ ## /vp-request
229
+
230
+ **Purpose**: Tạo và quản lý requests (Bug, Feature, Enhancement, Tech Debt, Brainstorm tiếp)
231
+
232
+ ### Flags
233
+ | Flag | Description |
234
+ |------|-------------|
235
+ | `--bug` | Bug report mode |
236
+ | `--feature` | Feature request mode |
237
+ | `--enhance` | Enhancement mode |
238
+ | `--debt` | Technical debt mode |
239
+ | `--brainstorm` | Brainstorm continuation |
240
+ | `--list` | List pending requests |
241
+ | `--quick` | Quick mode (minimal questions) |
242
+
243
+ ### Request Types
244
+
245
+ | Type | Emoji | Use Case |
246
+ |------|-------|----------|
247
+ | Bug | 🐛 | Something is broken |
248
+ | Feature | ✨ | New functionality |
249
+ | Enhancement | 🔧 | Improve existing feature |
250
+ | Tech Debt | 🧹 | Code cleanup/refactor |
251
+ | Brainstorm | 💡 | Explore new ideas |
252
+
253
+ ### Output
254
+ - `.viepilot/requests/{TYPE}-{NUMBER}.md`
255
+ - Updated `TRACKER.md` backlog
256
+
257
+ ### Workflow
258
+ 1. Select request type
259
+ 2. Gather details (questions vary by type)
260
+ 3. Create request file
261
+ 4. Add to backlog
262
+ 5. Offer routing options (fix now, add to phase, etc.)
263
+
264
+ ---
265
+
266
+ ## /vp-debug
267
+
268
+ **Purpose**: Systematic debugging với persistent state tracking qua nhiều sessions
269
+
270
+ ### Flags
271
+ | Flag | Description |
272
+ |------|-------------|
273
+ | `--new` | Force tạo debug session mới |
274
+ | `--continue` | Tiếp tục session hiện tại |
275
+ | `--list` | Liệt kê tất cả sessions |
276
+ | `--close [resolved\|unresolved\|wontfix]` | Đóng session với resolution |
277
+ | `--id <session_id>` | Làm việc với session cụ thể |
278
+
279
+ ### In-Session Commands
280
+ | Command | Description |
281
+ |---------|-------------|
282
+ | `/hypothesis <desc>` | Thêm hypothesis mới |
283
+ | `/test <id>` | Test hypothesis cụ thể |
284
+ | `/finding <desc>` | Ghi nhận finding |
285
+ | `/confirm <id>` | Mark hypothesis là confirmed |
286
+ | `/reject <id>` | Mark hypothesis là rejected |
287
+ | `/resolve` | Bắt đầu quá trình resolution |
288
+ | `/close` | Đóng session |
289
+ | `/status` | Xem trạng thái session hiện tại |
290
+
291
+ ### Session States
292
+ - `active` — Đang investigate
293
+ - `resolved` — Đã fix xong
294
+ - `unresolved` — Tạm dừng chưa fix
295
+ - `wontfix` — Quyết định không fix
296
+
297
+ ### Output
298
+ - `.viepilot/debug/session-{YYYYMMDD-HHMMSS}.json`
299
+ - `.viepilot/debug/CURRENT.json` (con trỏ session active)
300
+
301
+ ---
302
+
303
+ ## /vp-ui-components
304
+
305
+ **Purpose**: Quản lý thư viện UI components tái sử dụng (global + project-local)
306
+
307
+ ### Flags
308
+ | Flag | Description |
309
+ |------|-------------|
310
+ | `--add` | Add/capture component mới |
311
+ | `--list` | Liệt kê components theo category |
312
+ | `--sync` | Đồng bộ global ↔ local index |
313
+ | `--from-21st` | Ưu tiên ingest từ 21st.dev references |
314
+ | `--approve` | Mark component status thành approved |
315
+
316
+ ### Output
317
+ - `~/.viepilot/ui-components/{category}/{component-id}/...`
318
+ - `.viepilot/ui-components/{category}/{component-id}/...`
319
+ - `INDEX.md` cho global + local stores
320
+
321
+ ---
322
+
323
+ ## /vp-rollback
324
+
325
+ **Purpose**: Rollback về bất kỳ checkpoint nào một cách an toàn với state preservation
326
+
327
+ ### Flags
328
+ | Flag | Description |
329
+ |------|-------------|
330
+ | `--list` | Liệt kê tất cả checkpoints |
331
+ | `--to <tag>` | Rollback về tag cụ thể |
332
+ | `--phase <N>` | Rollback về đầu phase N |
333
+ | `--task <N.M>` | Rollback về trước task M của phase N |
334
+ | `--dry-run` | Xem trước changes, không thực hiện |
335
+ | `--force` | Bỏ qua confirmation |
336
+
337
+ ### Checkpoint Types
338
+ | Tag Pattern | Created By | Meaning |
339
+ |-------------|------------|---------|
340
+ | `vp-p{N}-t{M}` | vp-auto | Task started |
341
+ | `vp-p{N}-t{M}-done` | vp-auto | Task completed |
342
+ | `vp-p{N}-complete` | vp-auto | Phase completed |
343
+ | `v{semver}` | vp-auto | Version release |
344
+
345
+ ### Safety Guarantees
346
+ - Lưu current state trước khi rollback
347
+ - Tạo `vp-rollback-{timestamp}` branch backup
348
+ - Cho phép xem diff trước khi confirm
349
+ - Có thể undo rollback bằng cách checkout backup branch
350
+
351
+ ### Output
352
+ - Git reset về target checkpoint
353
+ - `vp-rollback-{timestamp}` backup branch
354
+ - Updated `.viepilot/HANDOFF.json` và `TRACKER.md`
355
+
356
+ ---
357
+
358
+ ## /vp-audit
359
+
360
+ **Purpose**: Kiểm tra documentation vs implementation — phát hiện và fix gaps
361
+
362
+ ### Flags
363
+ | Flag | Description |
364
+ |------|-------------|
365
+ | `--fix` | Auto-fix gaps tìm thấy |
366
+ | `--report` | Chỉ report, không fix |
367
+ | `--scope skills` | Chỉ audit skills |
368
+ | `--scope workflows` | Chỉ audit workflows |
369
+ | `--scope docs` | Chỉ audit docs/ directory |
370
+ | `--scope root` | Chỉ audit ROOT documents (README, ROADMAP) |
371
+
372
+ ### Checks Performed
373
+ 1. **Skills completeness** — mỗi skill có đủ required sections không
374
+ 2. **Workflow completeness** — mỗi workflow có `<purpose>`, `<process>`, `<step>`, `<success_criteria>` không
375
+ 3. **Cross-references** — skill `<execution_context>` trỏ đến workflow tồn tại không
376
+ 4. **CLI coverage** — mỗi command có documentation không
377
+ 5. **docs/ sync** — docs/ có match với thực tế (skills count, workflows count) không
378
+ 6. **ROOT drift** — README.md badges, ROADMAP.md status có up-to-date không
379
+
380
+ ### Output
381
+ - Audit report với danh sách gaps
382
+ - Optional auto-fix với commit
383
+
384
+ ---
385
+
386
+ ## /vp-task
387
+
388
+ **Purpose**: Manual task management
389
+
390
+ ### Commands
391
+ | Command | Description |
392
+ |---------|-------------|
393
+ | `list` | List tasks in current phase |
394
+ | `show N` | Show task N details |
395
+ | `start N` | Manually start task N |
396
+ | `done N` | Mark task N as done |
397
+ | `skip N --reason "..."` | Skip task N |
398
+ | `retry N` | Retry failed task N |
399
+ | `rollback N` | Rollback task N changes |