hzl-cli 1.4.0 → 1.6.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.
- package/README.md +335 -0
- package/dist/commands/config.js +2 -1
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/export-events.d.ts.map +1 -1
- package/dist/commands/export-events.js +2 -1
- package/dist/commands/export-events.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +4 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/project/create.d.ts.map +1 -1
- package/dist/commands/project/create.js +2 -1
- package/dist/commands/project/create.js.map +1 -1
- package/dist/commands/project/delete.d.ts.map +1 -1
- package/dist/commands/project/delete.js +10 -2
- package/dist/commands/project/delete.js.map +1 -1
- package/dist/commands/project/list.js +2 -1
- package/dist/commands/project/list.js.map +1 -1
- package/dist/commands/project/rename.js +2 -1
- package/dist/commands/project/rename.js.map +1 -1
- package/dist/commands/project/show.js +2 -1
- package/dist/commands/project/show.js.map +1 -1
- package/dist/commands/sample-project.d.ts.map +1 -1
- package/dist/commands/sample-project.js +7 -4
- package/dist/commands/sample-project.js.map +1 -1
- package/dist/commands/stats.d.ts.map +1 -1
- package/dist/commands/stats.js +2 -1
- package/dist/commands/stats.js.map +1 -1
- package/dist/commands/task/add-dep.d.ts.map +1 -1
- package/dist/commands/task/add-dep.js +2 -2
- package/dist/commands/task/add-dep.js.map +1 -1
- package/dist/commands/task/add.d.ts.map +1 -1
- package/dist/commands/task/add.js +3 -2
- package/dist/commands/task/add.js.map +1 -1
- package/dist/commands/task/archive.d.ts.map +1 -1
- package/dist/commands/task/archive.js +2 -1
- package/dist/commands/task/archive.js.map +1 -1
- package/dist/commands/task/checkpoint.d.ts.map +1 -1
- package/dist/commands/task/checkpoint.js +2 -1
- package/dist/commands/task/checkpoint.js.map +1 -1
- package/dist/commands/task/claim.d.ts.map +1 -1
- package/dist/commands/task/claim.js +2 -1
- package/dist/commands/task/claim.js.map +1 -1
- package/dist/commands/task/comment.d.ts.map +1 -1
- package/dist/commands/task/comment.js +2 -1
- package/dist/commands/task/comment.js.map +1 -1
- package/dist/commands/task/complete.d.ts.map +1 -1
- package/dist/commands/task/complete.js +2 -1
- package/dist/commands/task/complete.js.map +1 -1
- package/dist/commands/task/history.d.ts.map +1 -1
- package/dist/commands/task/history.js +5 -4
- package/dist/commands/task/history.js.map +1 -1
- package/dist/commands/task/list.d.ts.map +1 -1
- package/dist/commands/task/list.js +9 -3
- package/dist/commands/task/list.js.map +1 -1
- package/dist/commands/task/move.js +2 -1
- package/dist/commands/task/move.js.map +1 -1
- package/dist/commands/task/next.d.ts.map +1 -1
- package/dist/commands/task/next.js +2 -1
- package/dist/commands/task/next.js.map +1 -1
- package/dist/commands/task/release.d.ts.map +1 -1
- package/dist/commands/task/release.js +2 -1
- package/dist/commands/task/release.js.map +1 -1
- package/dist/commands/task/remove-dep.js +2 -1
- package/dist/commands/task/remove-dep.js.map +1 -1
- package/dist/commands/task/reopen.d.ts.map +1 -1
- package/dist/commands/task/reopen.js +2 -1
- package/dist/commands/task/reopen.js.map +1 -1
- package/dist/commands/task/search.d.ts.map +1 -1
- package/dist/commands/task/search.js +3 -2
- package/dist/commands/task/search.js.map +1 -1
- package/dist/commands/task/set-status.d.ts.map +1 -1
- package/dist/commands/task/set-status.js +2 -1
- package/dist/commands/task/set-status.js.map +1 -1
- package/dist/commands/task/show.js +2 -1
- package/dist/commands/task/show.js.map +1 -1
- package/dist/commands/task/steal.d.ts.map +1 -1
- package/dist/commands/task/steal.js +2 -1
- package/dist/commands/task/steal.js.map +1 -1
- package/dist/commands/task/stuck.d.ts +1 -1
- package/dist/commands/task/stuck.d.ts.map +1 -1
- package/dist/commands/task/stuck.js +9 -9
- package/dist/commands/task/stuck.js.map +1 -1
- package/dist/commands/task/update.d.ts.map +1 -1
- package/dist/commands/task/update.js +2 -1
- package/dist/commands/task/update.js.map +1 -1
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +2 -1
- package/dist/commands/validate.js.map +1 -1
- package/dist/commands/which-db.js +2 -1
- package/dist/commands/which-db.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +9 -3
- package/dist/config.js.map +1 -1
- package/dist/output.d.ts.map +1 -1
- package/dist/output.js +13 -1
- package/dist/output.js.map +1 -1
- package/package.json +7 -7
package/README.md
ADDED
|
@@ -0,0 +1,335 @@
|
|
|
1
|
+
# HZL (Hazel)
|
|
2
|
+
|
|
3
|
+
**A shared task ledger for OpenClaw and poly-agent workflows.**
|
|
4
|
+
|
|
5
|
+
OpenClaw is great at doing work: running tools, coordinating sub-agents, and maintaining memory.
|
|
6
|
+
What it (and most agent tools) do not give you is a durable, shared backlog that survives:
|
|
7
|
+
|
|
8
|
+
- session boundaries
|
|
9
|
+
- crashes/reboots
|
|
10
|
+
- switching between different agent runtimes (Claude Code, Codex, Gemini, etc.)
|
|
11
|
+
|
|
12
|
+
HZL fills that gap: a lightweight, local-first task tracker that any agent can read/write.
|
|
13
|
+
|
|
14
|
+
Using OpenClaw? Start here: [OpenClaw integration](#openclaw-integration)
|
|
15
|
+
|
|
16
|
+
Not using OpenClaw? Jump to: [Using HZL with Claude Code, Codex, Gemini CLI, or any coding agent](#using-hzl-with-claude-code-codex-gemini-cli-or-any-coding-agent)
|
|
17
|
+
|
|
18
|
+
HZL provides:
|
|
19
|
+
|
|
20
|
+
- Projects and tasks
|
|
21
|
+
- Dependencies (`B` waits for `A`)
|
|
22
|
+
- Checkpoints (progress snapshots you can resume from)
|
|
23
|
+
- Leases (time-limited claims for multi-agent coordination)
|
|
24
|
+
- Event history (audit trail)
|
|
25
|
+
- A CLI + JSON output that agents can script against
|
|
26
|
+
|
|
27
|
+
Data is stored in SQLite. Default location: `$XDG_DATA_HOME/hzl/data.db` (fallback `~/.local/share/hzl/data.db`); Windows: `%LOCALAPPDATA%\\hzl\\data.db`.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Why another task tracker?
|
|
32
|
+
|
|
33
|
+
Because most task trackers are built for humans.
|
|
34
|
+
|
|
35
|
+
HZL is built for agents:
|
|
36
|
+
|
|
37
|
+
- It is backend-first, not UI-first. Think "task database with a CLI," not "another Trello."
|
|
38
|
+
- It is model-agnostic. Your tasks live outside any one vendor's memory or chat history.
|
|
39
|
+
- It is multi-agent safe. Leases prevent orphaned work and enable clean handoffs.
|
|
40
|
+
- It is resumable. Checkpoints let an agent crash, reboot, or swap models and keep going.
|
|
41
|
+
|
|
42
|
+
If you already have a favorite human todo app, keep it.
|
|
43
|
+
If you need a shared task state that multiple agents can read/write, that is HZL.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Where HZL fits
|
|
48
|
+
|
|
49
|
+
### 1) OpenClaw orchestrator + sub-agents
|
|
50
|
+
|
|
51
|
+
```mermaid
|
|
52
|
+
flowchart LR
|
|
53
|
+
You[You] --> OC["OpenClaw (orchestrator)"]
|
|
54
|
+
OC --> Tools["OpenClaw tools<br/>(browser, exec, email, etc.)"]
|
|
55
|
+
OC <--> HZL[(HZL task ledger)]
|
|
56
|
+
OC --> S1[Claude Code]
|
|
57
|
+
OC --> S2[Codex / other]
|
|
58
|
+
S1 <--> HZL
|
|
59
|
+
S2 <--> HZL
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
OpenClaw coordinates the work. HZL is the shared, durable task board that OpenClaw and its sub-agents can use across sessions.
|
|
63
|
+
|
|
64
|
+
### 2) Any poly-agent system (no OpenClaw required)
|
|
65
|
+
|
|
66
|
+
```mermaid
|
|
67
|
+
flowchart LR
|
|
68
|
+
U[You] --> O["Orchestrator (human or agent)"]
|
|
69
|
+
O <--> HZL[(HZL)]
|
|
70
|
+
O --> C[Claude Code]
|
|
71
|
+
O --> X[Codex]
|
|
72
|
+
O --> G[Gemini]
|
|
73
|
+
C <--> HZL
|
|
74
|
+
X <--> HZL
|
|
75
|
+
G <--> HZL
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Same idea: once you are switching tools/models, you need a shared ledger.
|
|
79
|
+
|
|
80
|
+
### 3) One agent, many sessions
|
|
81
|
+
|
|
82
|
+
```mermaid
|
|
83
|
+
flowchart LR
|
|
84
|
+
U[You] --> A[Coding agent]
|
|
85
|
+
A <--> HZL
|
|
86
|
+
A --> R[Repo / files]
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Use HZL to persist "what's next" and "what changed" between sessions.
|
|
90
|
+
|
|
91
|
+
### 4) HZL as the backend for your own UI
|
|
92
|
+
|
|
93
|
+
```mermaid
|
|
94
|
+
flowchart LR
|
|
95
|
+
UI[Your lightweight web app] --> HZL
|
|
96
|
+
Agents[Agents + scripts] --> HZL
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
If you want a human-friendly interface, build one. HZL stays the durable backend that both humans and agents can use.
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Quickstart
|
|
104
|
+
|
|
105
|
+
### Install
|
|
106
|
+
|
|
107
|
+
Requires Node.js 22.14+.
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
npm install -g hzl-cli
|
|
111
|
+
hzl init
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Create a project and tasks
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
hzl project create portland-trip
|
|
118
|
+
|
|
119
|
+
hzl task add "Check calendars for March weekends" -P portland-trip --priority 5
|
|
120
|
+
hzl task add "Research neighborhoods + activities" -P portland-trip --priority 4
|
|
121
|
+
hzl task add "Shortlist 2-3 weekend options" -P portland-trip --priority 3 \
|
|
122
|
+
--depends-on <calendar-task-id> --depends-on <research-task-id>
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Work with checkpoints
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
hzl task claim <calendar-task-id> --author trevin-agent
|
|
129
|
+
hzl task checkpoint <calendar-task-id> "Found 3 options: Mar 7-9, 14-16, 21-23"
|
|
130
|
+
hzl task complete <calendar-task-id>
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Use JSON output when scripting
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
hzl task show <id> --json
|
|
137
|
+
hzl task next --project portland-trip --json
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## Core concepts (the stuff that matters)
|
|
143
|
+
|
|
144
|
+
### Tasks are units of work, not reminders
|
|
145
|
+
|
|
146
|
+
HZL is optimized for "do work, report progress, unblock the next step."
|
|
147
|
+
|
|
148
|
+
If you need time-based reminders, pair HZL with a scheduler (cron, OpenClaw cron, etc.).
|
|
149
|
+
|
|
150
|
+
### Checkpoints are progress snapshots
|
|
151
|
+
|
|
152
|
+
A checkpoint is a compact, durable record of what happened:
|
|
153
|
+
|
|
154
|
+
- what you tried
|
|
155
|
+
- what you found
|
|
156
|
+
- what's still missing
|
|
157
|
+
- links, commands, or file paths needed to resume
|
|
158
|
+
|
|
159
|
+
### Dependencies encode ordering
|
|
160
|
+
|
|
161
|
+
Dependencies are how an agent avoids premature work:
|
|
162
|
+
|
|
163
|
+
- "Don't search flights before you know dates."
|
|
164
|
+
- "Don't open a PR before tests pass."
|
|
165
|
+
|
|
166
|
+
### Leases make multi-agent handoffs reliable
|
|
167
|
+
|
|
168
|
+
Leases are time-limited claims:
|
|
169
|
+
|
|
170
|
+
- A worker agent claims a task with `--lease 30`
|
|
171
|
+
- If it disappears, the lease expires
|
|
172
|
+
- Another agent can detect stuck work and take over
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## Patterns
|
|
177
|
+
|
|
178
|
+
### Pattern: Poly-agent backlog (recommended)
|
|
179
|
+
|
|
180
|
+
Conventions that help:
|
|
181
|
+
|
|
182
|
+
- Use consistent author IDs: `openclaw`, `claude-code`, `codex`, `gemini`, etc.
|
|
183
|
+
- Claim tasks before work.
|
|
184
|
+
- Checkpoint whenever you learn something that would be painful to rediscover.
|
|
185
|
+
|
|
186
|
+
Example handoff:
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
# Orchestrator creates task
|
|
190
|
+
hzl task add "Implement REST API endpoints" -P myapp --priority 2
|
|
191
|
+
TASK_ID=<id>
|
|
192
|
+
|
|
193
|
+
# Worker agent claims with a lease
|
|
194
|
+
hzl task claim "$TASK_ID" --author claude-code --lease 30
|
|
195
|
+
hzl task checkpoint "$TASK_ID" "Endpoints scaffolded; next: auth middleware"
|
|
196
|
+
hzl task complete "$TASK_ID"
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### Pattern: Personal todo list (it works, but bring your own UI)
|
|
200
|
+
|
|
201
|
+
HZL can track personal tasks and has the advantage of centralizing agent and personal tasks.
|
|
202
|
+
This enables scenarios like OpenClaw assigning you tasks without needing to sync with other todo systems.
|
|
203
|
+
|
|
204
|
+
HZL itself is not trying to be a polished, human-first todo app. You bring other pieces for that.
|
|
205
|
+
|
|
206
|
+
If you want a todo app, build or use a UI:
|
|
207
|
+
|
|
208
|
+
- a tiny web app
|
|
209
|
+
- a TUI wrapper
|
|
210
|
+
- a menu bar widget
|
|
211
|
+
|
|
212
|
+
HZL stays the storage layer and concurrency-safe ledger underneath.
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
## Using HZL with Claude Code, Codex, Gemini CLI, or any coding agent
|
|
217
|
+
|
|
218
|
+
If your coding agent supports an instruction file (for example `CLAUDE.md`, `AGENTS.md`, `GEMINI.md`, etc.), add a short policy so the agent reaches for HZL consistently.
|
|
219
|
+
|
|
220
|
+
### Drop-in policy snippet
|
|
221
|
+
|
|
222
|
+
```md
|
|
223
|
+
### HZL task ledger (use for multi-step work)
|
|
224
|
+
|
|
225
|
+
When a request has multiple steps, spans multiple sessions, or involves coordination with other agents/tools:
|
|
226
|
+
1) Create or use an HZL project for the work.
|
|
227
|
+
2) Break work into tasks with dependencies.
|
|
228
|
+
3) Claim tasks before work and checkpoint after meaningful progress.
|
|
229
|
+
4) Use `--json` when producing output another tool will parse.
|
|
230
|
+
|
|
231
|
+
Key commands:
|
|
232
|
+
- `hzl project create <name>`
|
|
233
|
+
- `hzl task add "<title>" -P <project> [--depends-on <id>]`
|
|
234
|
+
- `hzl task claim <id> --author <agent-id> [--lease 30]`
|
|
235
|
+
- `hzl task checkpoint <id> "<progress + next step>"`
|
|
236
|
+
- `hzl task complete <id>`
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
That snippet is intentionally short. The goal is consistency, not ceremony.
|
|
240
|
+
|
|
241
|
+
### Claude Code marketplace (optional)
|
|
242
|
+
|
|
243
|
+
HZL includes a Claude Code plugin marketplace with skills that help agents work effectively with HZL.
|
|
244
|
+
|
|
245
|
+
```bash
|
|
246
|
+
# Add the marketplace
|
|
247
|
+
/plugin marketplace add tmchow/hzl
|
|
248
|
+
|
|
249
|
+
# Install the skills plugin
|
|
250
|
+
/plugin install hzl-skills@hzl-marketplace
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
See [`packages/hzl-marketplace`](./packages/hzl-marketplace) for details.
|
|
254
|
+
|
|
255
|
+
## OpenClaw integration
|
|
256
|
+
|
|
257
|
+
OpenClaw is a self-hosted AI assistant that can coordinate tools and sub-agents.
|
|
258
|
+
HZL fits well as the task ledger that OpenClaw (and its sub-agents) can share.
|
|
259
|
+
|
|
260
|
+
### Quick start (recommended)
|
|
261
|
+
|
|
262
|
+
Copy/paste this into an OpenClaw chat (single prompt):
|
|
263
|
+
|
|
264
|
+
```
|
|
265
|
+
Install HZL from https://github.com/tmchow/hzl and run hzl init. Install the HZL skill from https://www.clawhub.ai/tmchow/hzl. Then append the HZL policy from https://raw.githubusercontent.com/tmchow/hzl/main/docs/openclaw/tools-prompt.md to my TOOLS.md.
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
### Manual setup
|
|
269
|
+
|
|
270
|
+
1) Install HZL on the machine running OpenClaw:
|
|
271
|
+
|
|
272
|
+
```bash
|
|
273
|
+
npm install -g hzl-cli
|
|
274
|
+
hzl init
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
2) Install the HZL skill from https://www.clawhub.ai/tmchow/hzl
|
|
278
|
+
Skill source (for reference only): **[`docs/openclaw/skill-hzl.md`](./docs/openclaw/skill-hzl.md)**
|
|
279
|
+
|
|
280
|
+
3) Teach OpenClaw when to use HZL (important):
|
|
281
|
+
- Copy/paste from: **[`docs/openclaw/tools-prompt.md`](./docs/openclaw/tools-prompt.md)**
|
|
282
|
+
- Or tell OpenClaw to add this policy to `TOOLS.md`:
|
|
283
|
+
|
|
284
|
+
```
|
|
285
|
+
HZL is a tool available to you for task management in certain cases. I want you to add this information to your TOOLS.md in the right way so you remember how to use it:
|
|
286
|
+
https://raw.githubusercontent.com/tmchow/hzl/main/docs/openclaw/tools-prompt.md
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
291
|
+
## When to use HZL (and when not to)
|
|
292
|
+
|
|
293
|
+
### Use HZL when:
|
|
294
|
+
|
|
295
|
+
- work has multiple steps and you want explicit sequencing
|
|
296
|
+
- work spans multiple sessions (resume tomorrow with confidence)
|
|
297
|
+
- you are coordinating multiple agents or model providers
|
|
298
|
+
- you need durable status reporting (done / in progress / blocked / next)
|
|
299
|
+
- you want a task ledger your own UI can sit on top of
|
|
300
|
+
|
|
301
|
+
### Consider something else when:
|
|
302
|
+
|
|
303
|
+
- you need time-based reminders or notifications (use a scheduler + a notifier)
|
|
304
|
+
- you need rich human workflow features (due dates, recurring tasks, calendar views)
|
|
305
|
+
- you are tracking an org-wide backlog (GitHub/Jira/etc. may be a better fit)
|
|
306
|
+
|
|
307
|
+
---
|
|
308
|
+
|
|
309
|
+
## CLI reference (short)
|
|
310
|
+
|
|
311
|
+
```bash
|
|
312
|
+
hzl init
|
|
313
|
+
|
|
314
|
+
hzl project create <name>
|
|
315
|
+
hzl project list
|
|
316
|
+
|
|
317
|
+
hzl task add "<title>" -P <project>
|
|
318
|
+
hzl task list --project <project>
|
|
319
|
+
hzl task next --project <project>
|
|
320
|
+
|
|
321
|
+
hzl task claim <id> --author <name> [--lease <minutes>]
|
|
322
|
+
hzl task checkpoint <id> "<message>"
|
|
323
|
+
hzl task complete <id>
|
|
324
|
+
|
|
325
|
+
hzl task stuck
|
|
326
|
+
hzl task steal <id> --if-expired
|
|
327
|
+
|
|
328
|
+
hzl task show <id> --json
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
---
|
|
332
|
+
|
|
333
|
+
## License
|
|
334
|
+
|
|
335
|
+
MIT
|
package/dist/commands/config.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
2
|
import { readConfig, getDefaultDbPath, getConfigPath } from '../config.js';
|
|
3
|
+
import { GlobalOptionsSchema } from '../types.js';
|
|
3
4
|
export function runConfig(options) {
|
|
4
5
|
const { cliPath, json, configPath = getConfigPath() } = options;
|
|
5
6
|
// Determine db source and value
|
|
@@ -39,7 +40,7 @@ export function createConfigCommand() {
|
|
|
39
40
|
return new Command('config')
|
|
40
41
|
.description('Show current configuration')
|
|
41
42
|
.action(function () {
|
|
42
|
-
const globalOpts = this.optsWithGlobals();
|
|
43
|
+
const globalOpts = GlobalOptionsSchema.parse(this.optsWithGlobals());
|
|
43
44
|
runConfig({
|
|
44
45
|
cliPath: globalOpts.db,
|
|
45
46
|
json: globalOpts.json ?? false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAelD,MAAM,UAAU,SAAS,CAAC,OAAsB;IAC9C,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,GAAG,aAAa,EAAE,EAAE,GAAG,OAAO,CAAC;IAEhE,gCAAgC;IAChC,IAAI,QAAsC,CAAC;IAC3C,IAAI,OAAe,CAAC;IAEpB,IAAI,OAAO,EAAE,CAAC;QACZ,QAAQ,GAAG,KAAK,CAAC;QACjB,OAAO,GAAG,OAAO,CAAC;IACpB,CAAC;SAAM,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAC9B,QAAQ,GAAG,KAAK,CAAC;QACjB,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;QACtC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,QAAQ,GAAG,QAAQ,CAAC;YACpB,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,SAAS,CAAC;YACrB,OAAO,GAAG,gBAAgB,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAiB;QAC3B,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE;KACzC,CAAC;IAEF,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,OAAO,OAAO,UAAU,QAAQ,GAAG,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;SACzB,WAAW,CAAC,4BAA4B,CAAC;SACzC,MAAM,CAAC;QACN,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;QACrE,SAAS,CAAC;YACR,OAAO,EAAE,UAAU,CAAC,EAAE;YACtB,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,KAAK;SAC/B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export-events.d.ts","sourceRoot":"","sources":["../../src/commands/export-events.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAAyB,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAIhE,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE;IACvC,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;CACf,GAAG,kBAAkB,CAmCrB;AAED,wBAAgB,yBAAyB,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"export-events.d.ts","sourceRoot":"","sources":["../../src/commands/export-events.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAAyB,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAIhE,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE;IACvC,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;CACf,GAAG,kBAAkB,CAmCrB;AAED,wBAAgB,yBAAyB,IAAI,OAAO,CA0BnD"}
|
|
@@ -4,6 +4,7 @@ import fs from 'fs';
|
|
|
4
4
|
import { resolveDbPath } from '../config.js';
|
|
5
5
|
import { initializeDb, closeDb } from '../db.js';
|
|
6
6
|
import { handleError } from '../errors.js';
|
|
7
|
+
import { GlobalOptionsSchema } from '../types.js';
|
|
7
8
|
export function runExportEvents(options) {
|
|
8
9
|
const { services, outputPath, fromId, json } = options;
|
|
9
10
|
const { db } = services;
|
|
@@ -42,7 +43,7 @@ export function createExportEventsCommand() {
|
|
|
42
43
|
.argument('[output]', 'Output file path (use - for stdout)', '-')
|
|
43
44
|
.option('--from <id>', 'Export events starting from rowid')
|
|
44
45
|
.action(function (output, opts) {
|
|
45
|
-
const globalOpts = this.optsWithGlobals();
|
|
46
|
+
const globalOpts = GlobalOptionsSchema.parse(this.optsWithGlobals());
|
|
46
47
|
const dbPath = resolveDbPath(globalOpts.db);
|
|
47
48
|
const services = initializeDb(dbPath);
|
|
48
49
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export-events.js","sourceRoot":"","sources":["../../src/commands/export-events.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,OAAO,EAAiB,MAAM,UAAU,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"export-events.js","sourceRoot":"","sources":["../../src/commands/export-events.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAQL,KAAK,YAAY,EAClB,MAAM,cAAc,CAAC;AAGtB,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,YAAY,CAAC;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAgBD;;;GAGG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAyCvE;AAED,wBAAgB,iBAAiB,IAAI,OAAO,CAmC3C"}
|
package/dist/commands/init.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
// packages/hzl-cli/src/commands/init.ts
|
|
2
2
|
import { Command } from 'commander';
|
|
3
3
|
import fs from 'fs';
|
|
4
|
+
import { z } from 'zod';
|
|
4
5
|
import { resolveDbPathWithSource, getDefaultDbPath, ensureDbDirectory, writeConfig, readConfig, getConfigPath, isDevMode } from '../config.js';
|
|
6
|
+
import { GlobalOptionsSchema } from '../types.js';
|
|
5
7
|
function formatSourceHint(source) {
|
|
6
8
|
switch (source) {
|
|
7
9
|
case 'cli': return `(from --db flag)`;
|
|
@@ -56,8 +58,8 @@ export function createInitCommand() {
|
|
|
56
58
|
.description('Initialize a new HZL database')
|
|
57
59
|
.option('-f, --force', 'Reset to default location (or use with --db for specific path)')
|
|
58
60
|
.action(async function () {
|
|
59
|
-
const globalOpts = this.optsWithGlobals();
|
|
60
|
-
const opts = this.opts();
|
|
61
|
+
const globalOpts = GlobalOptionsSchema.parse(this.optsWithGlobals());
|
|
62
|
+
const opts = z.object({ force: z.boolean().optional() }).parse(this.opts());
|
|
61
63
|
const force = opts.force ?? false;
|
|
62
64
|
let dbPath;
|
|
63
65
|
let pathSource;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,UAAU,EACV,aAAa,EACb,SAAS,EAEV,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/project/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAyB,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAInE,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,OAAO,CAAC;CACf;
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/project/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAyB,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAInE,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,OAAO,CAAC;CACf;AAMD,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,oBAAoB,GAC5B,mBAAmB,CAqBrB;AAED,wBAAgB,0BAA0B,IAAI,OAAO,CAsBpD"}
|
|
@@ -2,6 +2,7 @@ import { Command } from 'commander';
|
|
|
2
2
|
import { resolveDbPath } from '../../config.js';
|
|
3
3
|
import { initializeDb, closeDb } from '../../db.js';
|
|
4
4
|
import { handleError } from '../../errors.js';
|
|
5
|
+
import { GlobalOptionsSchema } from '../../types.js';
|
|
5
6
|
export function runProjectCreate(options) {
|
|
6
7
|
const { services, name, description, json } = options;
|
|
7
8
|
const project = services.projectService.createProject(name, {
|
|
@@ -27,7 +28,7 @@ export function createProjectCreateCommand() {
|
|
|
27
28
|
.argument('<name>', 'Project name')
|
|
28
29
|
.option('-d, --description <desc>', 'Project description')
|
|
29
30
|
.action(function (name, opts) {
|
|
30
|
-
const globalOpts = this.optsWithGlobals();
|
|
31
|
+
const globalOpts = GlobalOptionsSchema.parse(this.optsWithGlobals());
|
|
31
32
|
const dbPath = resolveDbPath(globalOpts.db);
|
|
32
33
|
const services = initializeDb(dbPath);
|
|
33
34
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/project/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAiB,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/project/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAiB,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAoBrD,MAAM,UAAU,gBAAgB,CAC9B,OAA6B;IAE7B,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAEtD,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,EAAE;QAC1D,WAAW;KACZ,CAAC,CAAC;IAEH,MAAM,MAAM,GAAwB;QAClC,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,UAAU,EAAE,OAAO,CAAC,UAAU;KAC/B,CAAC;IAEF,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,qBAAqB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,0BAA0B;IACxC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;SACzB,WAAW,CAAC,sBAAsB,CAAC;SACnC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;SAClC,MAAM,CAAC,0BAA0B,EAAE,qBAAqB,CAAC;SACzD,MAAM,CAAC,UAAyB,IAAY,EAAE,IAAiC;QAC9E,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC;YACH,gBAAgB,CAAC;gBACf,QAAQ;gBACR,IAAI;gBACJ,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,KAAK;aAC/B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/commands/project/delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAyB,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAMnE,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;CAChD;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,EAAE,OAAO,CAAC;CACf;
|
|
1
|
+
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/commands/project/delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAyB,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAMnE,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;CAChD;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,EAAE,OAAO,CAAC;CACf;AAgDD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,oBAAoB,GAAG,mBAAmB,CA0GnF;AAED,wBAAgB,0BAA0B,IAAI,OAAO,CA8BpD"}
|
|
@@ -2,6 +2,7 @@ import { Command } from 'commander';
|
|
|
2
2
|
import { resolveDbPath } from '../../config.js';
|
|
3
3
|
import { initializeDb, closeDb } from '../../db.js';
|
|
4
4
|
import { CLIError, ExitCode, handleError } from '../../errors.js';
|
|
5
|
+
import { GlobalOptionsSchema } from '../../types.js';
|
|
5
6
|
import { EventType, PROJECT_EVENT_TASK_ID } from 'hzl-core/events/types.js';
|
|
6
7
|
import { withWriteTransaction } from 'hzl-core/db/connection.js';
|
|
7
8
|
/**
|
|
@@ -106,11 +107,18 @@ export function runProjectDelete(options) {
|
|
|
106
107
|
},
|
|
107
108
|
});
|
|
108
109
|
services.projectionEngine.applyEvent(event);
|
|
110
|
+
const action = moveTo
|
|
111
|
+
? 'move'
|
|
112
|
+
: archiveTasks
|
|
113
|
+
? 'archive'
|
|
114
|
+
: deleteTasks
|
|
115
|
+
? 'delete'
|
|
116
|
+
: 'none';
|
|
109
117
|
return {
|
|
110
118
|
name,
|
|
111
119
|
task_count: activeCount,
|
|
112
120
|
archived_task_count: archivedCount,
|
|
113
|
-
action
|
|
121
|
+
action,
|
|
114
122
|
};
|
|
115
123
|
});
|
|
116
124
|
if (json) {
|
|
@@ -129,7 +137,7 @@ export function createProjectDeleteCommand() {
|
|
|
129
137
|
.option('--archive-tasks', 'Archive tasks before deleting project')
|
|
130
138
|
.option('--delete-tasks', 'Delete tasks before deleting project')
|
|
131
139
|
.action(function (name, opts) {
|
|
132
|
-
const globalOpts = this.optsWithGlobals();
|
|
140
|
+
const globalOpts = GlobalOptionsSchema.parse(this.optsWithGlobals());
|
|
133
141
|
const dbPath = resolveDbPath(globalOpts.db);
|
|
134
142
|
const services = initializeDb(dbPath);
|
|
135
143
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/commands/project/delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAiB,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/commands/project/delete.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { Command } from 'commander';
|
|
|
2
2
|
import { resolveDbPath } from '../../config.js';
|
|
3
3
|
import { initializeDb, closeDb } from '../../db.js';
|
|
4
4
|
import { handleError } from '../../errors.js';
|
|
5
|
+
import { GlobalOptionsSchema } from '../../types.js';
|
|
5
6
|
export function runProjectList(options) {
|
|
6
7
|
const { services, json } = options;
|
|
7
8
|
const rows = services.db
|
|
@@ -51,7 +52,7 @@ export function createProjectListCommand() {
|
|
|
51
52
|
return new Command('list')
|
|
52
53
|
.description('List projects with task counts')
|
|
53
54
|
.action(function () {
|
|
54
|
-
const globalOpts = this.optsWithGlobals();
|
|
55
|
+
const globalOpts = GlobalOptionsSchema.parse(this.optsWithGlobals());
|
|
55
56
|
const dbPath = resolveDbPath(globalOpts.db);
|
|
56
57
|
const services = initializeDb(dbPath);
|
|
57
58
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/project/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAiB,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/project/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAiB,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAerD,MAAM,UAAU,cAAc,CAAC,OAG9B;IACC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAEnC,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE;SACrB,OAAO,CACN;;;;;;;;;;;KAWD,CACA;SACA,GAAG,EAMH,CAAC;IAEJ,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAChC,MAAM,aAAa,GAAG,GAAG,CAAC,mBAAmB,IAAI,CAAC,CAAC;QACnD,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC;QACvC,OAAO;YACL,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,YAAY,EAAE,GAAG,CAAC,YAAY,KAAK,CAAC;YACpC,UAAU,EAAE,UAAU;YACtB,mBAAmB,EAAE,aAAa;YAClC,iBAAiB,EAAE,UAAU,GAAG,aAAa;SAC9C,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAsB,EAAE,QAAQ,EAAE,CAAC;IAE/C,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACzB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,OAAO,CAAC,GAAG,CACT,KAAK,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,iBAAiB,YAAY,OAAO,CAAC,mBAAmB,WAAW,CAClG,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;SACvB,WAAW,CAAC,gCAAgC,CAAC;SAC7C,MAAM,CAAC;QACN,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC;YACH,cAAc,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC;QAC/D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -2,6 +2,7 @@ import { Command } from 'commander';
|
|
|
2
2
|
import { resolveDbPath } from '../../config.js';
|
|
3
3
|
import { initializeDb, closeDb } from '../../db.js';
|
|
4
4
|
import { handleError } from '../../errors.js';
|
|
5
|
+
import { GlobalOptionsSchema } from '../../types.js';
|
|
5
6
|
export function runProjectRename(options) {
|
|
6
7
|
const { services, oldName, newName, json } = options;
|
|
7
8
|
services.projectService.renameProject(oldName, newName);
|
|
@@ -23,7 +24,7 @@ export function createProjectRenameCommand() {
|
|
|
23
24
|
.argument('<oldName>', 'Current project name')
|
|
24
25
|
.argument('<newName>', 'New project name')
|
|
25
26
|
.action(function (oldName, newName) {
|
|
26
|
-
const globalOpts = this.optsWithGlobals();
|
|
27
|
+
const globalOpts = GlobalOptionsSchema.parse(this.optsWithGlobals());
|
|
27
28
|
const dbPath = resolveDbPath(globalOpts.db);
|
|
28
29
|
const services = initializeDb(dbPath);
|
|
29
30
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rename.js","sourceRoot":"","sources":["../../../src/commands/project/rename.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAiB,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"rename.js","sourceRoot":"","sources":["../../../src/commands/project/rename.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAiB,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAcrD,MAAM,UAAU,gBAAgB,CAC9B,OAA6B;IAE7B,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAErD,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAExD,MAAM,MAAM,GAAwB;QAClC,QAAQ,EAAE,OAAO;QACjB,QAAQ,EAAE,OAAO;KAClB,CAAC;IAEF,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,sBAAsB,OAAO,SAAS,OAAO,GAAG,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,0BAA0B;IACxC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;SACzB,WAAW,CAAC,kBAAkB,CAAC;SAC/B,QAAQ,CAAC,WAAW,EAAE,sBAAsB,CAAC;SAC7C,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;SACzC,MAAM,CAAC,UAAyB,OAAe,EAAE,OAAe;QAC/D,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC;YACH,gBAAgB,CAAC;gBACf,QAAQ;gBACR,OAAO;gBACP,OAAO;gBACP,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,KAAK;aAC/B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -2,6 +2,7 @@ import { Command } from 'commander';
|
|
|
2
2
|
import { resolveDbPath } from '../../config.js';
|
|
3
3
|
import { initializeDb, closeDb } from '../../db.js';
|
|
4
4
|
import { CLIError, ExitCode, handleError } from '../../errors.js';
|
|
5
|
+
import { GlobalOptionsSchema } from '../../types.js';
|
|
5
6
|
export function runProjectShow(options) {
|
|
6
7
|
const { services, name, json } = options;
|
|
7
8
|
const project = services.projectService.getProject(name);
|
|
@@ -60,7 +61,7 @@ export function createProjectShowCommand() {
|
|
|
60
61
|
.description('Show project details')
|
|
61
62
|
.argument('<name>', 'Project name')
|
|
62
63
|
.action(function (name) {
|
|
63
|
-
const globalOpts = this.optsWithGlobals();
|
|
64
|
+
const globalOpts = GlobalOptionsSchema.parse(this.optsWithGlobals());
|
|
64
65
|
const dbPath = resolveDbPath(globalOpts.db);
|
|
65
66
|
const services = initializeDb(dbPath);
|
|
66
67
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"show.js","sourceRoot":"","sources":["../../../src/commands/project/show.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAiB,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"show.js","sourceRoot":"","sources":["../../../src/commands/project/show.ts"],"names":[],"mappings":"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"}
|