clawck 0.1.0 → 0.3.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 +223 -151
- package/dist/cli/index.js +926 -30
- package/dist/cli/index.js.map +1 -1
- package/dist/core/clawck.d.ts +16 -3
- package/dist/core/clawck.d.ts.map +1 -1
- package/dist/core/clawck.js +48 -14
- package/dist/core/clawck.js.map +1 -1
- package/dist/core/database.d.ts +4 -4
- package/dist/core/database.d.ts.map +1 -1
- package/dist/core/database.js +85 -104
- package/dist/core/database.js.map +1 -1
- package/dist/core/patterns.d.ts +7 -0
- package/dist/core/patterns.d.ts.map +1 -0
- package/dist/core/patterns.js +36 -0
- package/dist/core/patterns.js.map +1 -0
- package/dist/core/types.d.ts +31 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/core/webhooks.d.ts +22 -0
- package/dist/core/webhooks.d.ts.map +1 -0
- package/dist/core/webhooks.js +70 -0
- package/dist/core/webhooks.js.map +1 -0
- package/dist/dashboard/index.d.ts.map +1 -1
- package/dist/dashboard/index.js +7 -1
- package/dist/dashboard/index.js.map +1 -1
- package/dist/hooks/adapters.d.ts +8 -0
- package/dist/hooks/adapters.d.ts.map +1 -0
- package/dist/hooks/adapters.js +138 -0
- package/dist/hooks/adapters.js.map +1 -0
- package/dist/hooks/handler.d.ts +9 -0
- package/dist/hooks/handler.d.ts.map +1 -0
- package/dist/hooks/handler.js +90 -0
- package/dist/hooks/handler.js.map +1 -0
- package/dist/hooks/index.d.ts +10 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +23 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/install.d.ts +16 -0
- package/dist/hooks/install.d.ts.map +1 -0
- package/dist/hooks/install.js +239 -0
- package/dist/hooks/install.js.map +1 -0
- package/dist/hooks/session.d.ts +10 -0
- package/dist/hooks/session.d.ts.map +1 -0
- package/dist/hooks/session.js +72 -0
- package/dist/hooks/session.js.map +1 -0
- package/dist/hooks/stdin.d.ts +6 -0
- package/dist/hooks/stdin.d.ts.map +1 -0
- package/dist/hooks/stdin.js +38 -0
- package/dist/hooks/stdin.js.map +1 -0
- package/dist/hooks/types.d.ts +23 -0
- package/dist/hooks/types.d.ts.map +1 -0
- package/dist/hooks/types.js +7 -0
- package/dist/hooks/types.js.map +1 -0
- package/dist/reports/html.d.ts +13 -0
- package/dist/reports/html.d.ts.map +1 -0
- package/dist/reports/html.js +321 -0
- package/dist/reports/html.js.map +1 -0
- package/dist/reports/pdf.d.ts +13 -0
- package/dist/reports/pdf.d.ts.map +1 -0
- package/dist/reports/pdf.js +169 -0
- package/dist/reports/pdf.js.map +1 -0
- package/dist/server/api.d.ts.map +1 -1
- package/dist/server/api.js +18 -2
- package/dist/server/api.js.map +1 -1
- package/dist/server/mcp.d.ts.map +1 -1
- package/dist/server/mcp.js +140 -32
- package/dist/server/mcp.js.map +1 -1
- package/docs/skills/clawck-setup.md +131 -0
- package/docs/skills/clawck-usage.md +148 -0
- package/docs/snippets/claude-md.txt +24 -0
- package/docs/snippets/hooks-claude.json +16 -0
- package/docs/snippets/hooks-cline.txt +10 -0
- package/docs/snippets/hooks-codex.json +16 -0
- package/docs/snippets/hooks-cursor.json +16 -0
- package/docs/snippets/hooks-gemini.json +16 -0
- package/docs/snippets/hooks-windsurf.json +16 -0
- package/docs/snippets/mcp-config.json +7 -0
- package/docs/snippets/openclaw-agent-md.txt +18 -0
- package/docs/snippets/openclaw-heartbeat-md.txt +17 -0
- package/package.json +6 -3
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# Clawck Setup Guide
|
|
2
|
+
|
|
3
|
+
Integrate Clawck generation time tracking into your AI agent platform. Clawck measures how long an AI agent's computation, reasoning, and response generation take per turn — it is NOT human time tracking.
|
|
4
|
+
|
|
5
|
+
## Claude Code
|
|
6
|
+
|
|
7
|
+
### 1. Add MCP Server
|
|
8
|
+
|
|
9
|
+
Add to your `mcp_servers.json` (or `~/.claude/mcp_servers.json` for global):
|
|
10
|
+
|
|
11
|
+
```json
|
|
12
|
+
{
|
|
13
|
+
"clawck": {
|
|
14
|
+
"command": "npx",
|
|
15
|
+
"args": ["-y", "clawck", "mcp"],
|
|
16
|
+
"env": {}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### 2. Add CLAUDE.md Instructions
|
|
22
|
+
|
|
23
|
+
Add the following to your project's `CLAUDE.md` (or `~/.claude/CLAUDE.md` for global):
|
|
24
|
+
|
|
25
|
+
```markdown
|
|
26
|
+
## Generation Time Tracking (Clawck)
|
|
27
|
+
|
|
28
|
+
You have Clawck tools via MCP that measure YOUR generation time — how long your computation, reasoning, tool calls, and response generation take. This is NOT human time tracking. You are timing your own AI processing.
|
|
29
|
+
|
|
30
|
+
You MUST time every turn automatically:
|
|
31
|
+
|
|
32
|
+
1. **Start of every turn**: Call `clawck_start_task` IMMEDIATELY when you receive a message, BEFORE doing any other work.
|
|
33
|
+
2. **End of every turn**: Call `clawck_stop_task` as the LAST action before sending your reply.
|
|
34
|
+
3. **Every turn**: Each user message = one generation cycle. A 5-message conversation = 5 time entries.
|
|
35
|
+
4. **Errors**: Always stop the timer even on failure — use `status: "failed"`.
|
|
36
|
+
5. **Forgot to start?** Use `clawck_log_task` with an estimated duration.
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Run `clawck setup claude` to get the full snippet.
|
|
40
|
+
|
|
41
|
+
## OpenClaw
|
|
42
|
+
|
|
43
|
+
OpenClaw agents use behavioral files for persistent integration:
|
|
44
|
+
|
|
45
|
+
### AGENT.md
|
|
46
|
+
|
|
47
|
+
Add clawck rules to your `AGENT.md`. Run `clawck setup openclaw` for the snippet.
|
|
48
|
+
|
|
49
|
+
### HEARTBEAT.md
|
|
50
|
+
|
|
51
|
+
Add per-turn hooks to your `HEARTBEAT.md`. Run `clawck setup openclaw` for the snippet.
|
|
52
|
+
|
|
53
|
+
### SOUL.md
|
|
54
|
+
|
|
55
|
+
Add accountability identity to your `SOUL.md`:
|
|
56
|
+
|
|
57
|
+
```markdown
|
|
58
|
+
I track my own work time using Clawck. Every turn I clock in and out automatically.
|
|
59
|
+
This is part of my accountability to the humans I work for — they deserve to know
|
|
60
|
+
how their AI resources are being spent.
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Cursor / Cline / Windsurf
|
|
64
|
+
|
|
65
|
+
These editors support MCP servers. Add the clawck MCP config to:
|
|
66
|
+
|
|
67
|
+
- **Cursor**: `.cursor/mcp.json` in your project root
|
|
68
|
+
- **Cline**: VS Code settings → Cline → MCP Servers
|
|
69
|
+
- **Windsurf**: `.windsurf/mcp.json` in your project root
|
|
70
|
+
|
|
71
|
+
The MCP config block is the same for all:
|
|
72
|
+
|
|
73
|
+
```json
|
|
74
|
+
{
|
|
75
|
+
"clawck": {
|
|
76
|
+
"command": "npx",
|
|
77
|
+
"args": ["-y", "clawck", "mcp"],
|
|
78
|
+
"env": {}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## API Agents (Python / n8n / LangGraph)
|
|
84
|
+
|
|
85
|
+
For agents that don't support MCP natively, use the Clawck REST API:
|
|
86
|
+
|
|
87
|
+
### Start the server
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
clawck serve --port 3456
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Python wrapper
|
|
94
|
+
|
|
95
|
+
```python
|
|
96
|
+
import requests
|
|
97
|
+
import time
|
|
98
|
+
|
|
99
|
+
CLAWCK_URL = "http://localhost:3456/api"
|
|
100
|
+
|
|
101
|
+
def clawck_start(task, project="", client="", category="code"):
|
|
102
|
+
r = requests.post(f"{CLAWCK_URL}/start", json={
|
|
103
|
+
"task": task, "project": project, "client": client, "category": category
|
|
104
|
+
})
|
|
105
|
+
return r.json()["id"]
|
|
106
|
+
|
|
107
|
+
def clawck_stop(entry_id, status="completed", summary=""):
|
|
108
|
+
requests.post(f"{CLAWCK_URL}/stop", json={
|
|
109
|
+
"id": entry_id, "status": status, "summary": summary
|
|
110
|
+
})
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### n8n / LangGraph
|
|
114
|
+
|
|
115
|
+
Use HTTP Request nodes to call the REST API at `http://localhost:3456/api/start` and `/api/stop` at the beginning and end of each agent turn.
|
|
116
|
+
|
|
117
|
+
## Quick Start CLI
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
# See all setup options
|
|
121
|
+
clawck setup
|
|
122
|
+
|
|
123
|
+
# Get CLAUDE.md snippet
|
|
124
|
+
clawck setup claude
|
|
125
|
+
|
|
126
|
+
# Get MCP config JSON
|
|
127
|
+
clawck setup mcp
|
|
128
|
+
|
|
129
|
+
# Get OpenClaw snippets
|
|
130
|
+
clawck setup openclaw
|
|
131
|
+
```
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
# Clawck Usage Protocol
|
|
2
|
+
|
|
3
|
+
Detailed guide for AI agents using Clawck to measure their own generation time.
|
|
4
|
+
|
|
5
|
+
## What Clawck Measures
|
|
6
|
+
|
|
7
|
+
Clawck measures **your active generation/computation time** — the wall-clock duration from when you start processing a user message to when you finish generating your response. This is NOT human time tracking. Typical durations are seconds to minutes. Think of it as a stopwatch on your own CPU.
|
|
8
|
+
|
|
9
|
+
The resulting data enables:
|
|
10
|
+
- **Billing**: How much compute time each task consumed
|
|
11
|
+
- **Cost analysis**: Tokens + cost per task/project/client
|
|
12
|
+
- **Human-equivalent estimates**: How long this work would take a human (calculated from the `category`)
|
|
13
|
+
- **ROI reporting**: Agent cost vs. human-equivalent cost
|
|
14
|
+
|
|
15
|
+
## Generation Lifecycle
|
|
16
|
+
|
|
17
|
+
Every agent turn follows this lifecycle:
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
User message received
|
|
21
|
+
│
|
|
22
|
+
▼
|
|
23
|
+
┌─ clawck_start_task ──────────┐
|
|
24
|
+
│ (start generation timer) │
|
|
25
|
+
└──────────────────────────────┘
|
|
26
|
+
│
|
|
27
|
+
▼
|
|
28
|
+
┌─ Process request ────────────┐
|
|
29
|
+
│ • Reason / plan │
|
|
30
|
+
│ • Call tools │
|
|
31
|
+
│ • Write code │
|
|
32
|
+
│ • Generate output │
|
|
33
|
+
│ (all ONE generation cycle) │
|
|
34
|
+
└──────────────────────────────┘
|
|
35
|
+
│
|
|
36
|
+
▼
|
|
37
|
+
┌─ clawck_stop_task ───────────┐
|
|
38
|
+
│ (stop generation timer) │
|
|
39
|
+
└──────────────────────────────┘
|
|
40
|
+
│
|
|
41
|
+
▼
|
|
42
|
+
Send response to user
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Multi-Message Tracking
|
|
46
|
+
|
|
47
|
+
Each turn in a conversation is timed independently:
|
|
48
|
+
|
|
49
|
+
| Turn | User Says | Agent Times |
|
|
50
|
+
|------|-----------|-------------|
|
|
51
|
+
| 1 | "Fix the login bug" | start → generate → stop (entry 1) |
|
|
52
|
+
| 2 | "Add tests for it" | start → generate → stop (entry 2) |
|
|
53
|
+
| 3 | "Deploy to staging" | start → generate → stop (entry 3) |
|
|
54
|
+
|
|
55
|
+
A 5-message session produces 5 time entries. This gives granular visibility into what each generation cycle cost.
|
|
56
|
+
|
|
57
|
+
## Field Guidelines
|
|
58
|
+
|
|
59
|
+
### task
|
|
60
|
+
Describe what YOU (the agent) are doing, not what the user asked:
|
|
61
|
+
- Good: "Refactor auth module to use JWT tokens"
|
|
62
|
+
- Bad: "User asked me to fix authentication"
|
|
63
|
+
|
|
64
|
+
### project
|
|
65
|
+
The project being worked on. Infer from context, directory name, or ask once and reuse:
|
|
66
|
+
- "website-rebuild", "grant-research", "api-v2"
|
|
67
|
+
|
|
68
|
+
### client
|
|
69
|
+
The client or organization. Infer from context or prior entries:
|
|
70
|
+
- "acme-corp", "internal", "cubicrew"
|
|
71
|
+
|
|
72
|
+
### category
|
|
73
|
+
Classify the type of work. Available categories:
|
|
74
|
+
- `code` — Writing, reviewing, or refactoring code
|
|
75
|
+
- `research` — Searching, reading, analyzing information
|
|
76
|
+
- `content` — Writing docs, emails, copy, blog posts
|
|
77
|
+
- `analysis` — Data analysis, reporting, insights
|
|
78
|
+
- `data_entry` — Data migration, formatting, entry
|
|
79
|
+
- `communication` — Emails, messages, outreach
|
|
80
|
+
- `testing` — Writing or running tests
|
|
81
|
+
- `design` — UI/UX design, mockups, wireframes
|
|
82
|
+
|
|
83
|
+
### summary (on stop)
|
|
84
|
+
Brief description of what was accomplished:
|
|
85
|
+
- "Fixed JWT token refresh logic and added error handling"
|
|
86
|
+
- "Searched 3 grant databases, found 2 relevant opportunities"
|
|
87
|
+
|
|
88
|
+
### tokens / cost (on stop)
|
|
89
|
+
Report if your platform provides this data:
|
|
90
|
+
- `tokens_in`: Input tokens consumed this turn
|
|
91
|
+
- `tokens_out`: Output tokens generated this turn
|
|
92
|
+
- `cost_usd`: Estimated cost in USD
|
|
93
|
+
|
|
94
|
+
## Edge Cases
|
|
95
|
+
|
|
96
|
+
### Errors / Failures
|
|
97
|
+
Always stop the timer even when things go wrong:
|
|
98
|
+
```
|
|
99
|
+
clawck_stop_task({ id: "...", status: "failed", summary: "Build failed due to missing dependency" })
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Forgot to Start the Timer
|
|
103
|
+
Use retroactive logging:
|
|
104
|
+
```
|
|
105
|
+
clawck_log_task({ task: "Debug API timeout", duration_minutes: 3, project: "api-v2", category: "code" })
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Long Generations
|
|
109
|
+
If a turn takes unusually long (e.g., large codebase analysis), that's fine — one turn = one entry regardless of duration.
|
|
110
|
+
|
|
111
|
+
### Idle Time Between Turns
|
|
112
|
+
Do NOT track time between turns. Only measure your active generation time within a turn. The time between your response and the user's next message is NOT your computation — don't record it.
|
|
113
|
+
|
|
114
|
+
### Sub-Tasks Within a Turn
|
|
115
|
+
All work within one turn is a single entry. If you call 10 tools during one turn, that's still ONE generation cycle. Don't create separate entries for each tool call.
|
|
116
|
+
|
|
117
|
+
## Examples
|
|
118
|
+
|
|
119
|
+
### Basic Turn
|
|
120
|
+
```
|
|
121
|
+
1. Receive: "Add input validation to the signup form"
|
|
122
|
+
2. clawck_start_task({ task: "Add input validation to signup form", project: "website", client: "acme-corp", category: "code" })
|
|
123
|
+
→ Timer starts. Your generation begins.
|
|
124
|
+
3. Read files, write code, run tests
|
|
125
|
+
4. clawck_stop_task({ id: "abc-123", status: "completed", summary: "Added email format and password strength validation", tokens_out: 1500 })
|
|
126
|
+
→ Timer stops. Your generation is complete.
|
|
127
|
+
5. Send response
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Failed Task
|
|
131
|
+
```
|
|
132
|
+
1. Receive: "Deploy to production"
|
|
133
|
+
2. clawck_start_task({ task: "Deploy to production", project: "api-v2", client: "acme-corp", category: "code" })
|
|
134
|
+
3. Attempt deployment, encounter error
|
|
135
|
+
4. clawck_stop_task({ id: "def-456", status: "failed", summary: "Deploy failed: missing ENV vars on production server" })
|
|
136
|
+
5. Send error response to user
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Retroactive Log
|
|
140
|
+
```
|
|
141
|
+
1. Receive: "What was that error about?"
|
|
142
|
+
2. Realize forgot to start timer on previous turn
|
|
143
|
+
3. clawck_log_task({ task: "Diagnosed API timeout in payment service", duration_minutes: 2, project: "api-v2", category: "code" })
|
|
144
|
+
4. clawck_start_task({ task: "Explain previous API timeout diagnosis", project: "api-v2", category: "communication" })
|
|
145
|
+
5. Explain the error
|
|
146
|
+
6. clawck_stop_task({ id: "ghi-789", status: "completed", summary: "Explained root cause of API timeout to user" })
|
|
147
|
+
7. Send response
|
|
148
|
+
```
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
## Generation Time Tracking (Clawck)
|
|
2
|
+
|
|
3
|
+
You have Clawck time tracking tools via MCP. Clawck measures YOUR generation time — how long your computation, reasoning, tool calls, and response generation take. This is NOT human time tracking. You are timing your own AI processing, like a stopwatch on your own CPU.
|
|
4
|
+
|
|
5
|
+
You MUST time every turn automatically:
|
|
6
|
+
|
|
7
|
+
1. **Start of every turn**: Call `clawck_start_task` IMMEDIATELY when you receive a message, BEFORE doing any other work. This marks the start of your generation.
|
|
8
|
+
2. **End of every turn**: Call `clawck_stop_task` as the LAST action before sending your reply. This marks the end of your generation.
|
|
9
|
+
3. **Every turn**: Each user message = one generation cycle. A 5-message conversation = 5 time entries.
|
|
10
|
+
4. **Errors**: Always stop the timer even on failure — use `status: "failed"`.
|
|
11
|
+
5. **Forgot to start?** Use `clawck_log_task` with an estimated duration.
|
|
12
|
+
|
|
13
|
+
### Field Guidelines
|
|
14
|
+
- `task`: Describe what YOU are doing (e.g., "Refactor auth module"), not what the user asked.
|
|
15
|
+
- `project` / `client`: Include if known from context or previous entries.
|
|
16
|
+
- `category`: Classify the work type (code, research, content, analysis, etc.).
|
|
17
|
+
- `summary`: Brief description of what was accomplished when stopping.
|
|
18
|
+
- `tokens_in` / `tokens_out` / `cost_usd`: Report if available.
|
|
19
|
+
|
|
20
|
+
### Important
|
|
21
|
+
- Do NOT ask the user for permission to track. Just do it.
|
|
22
|
+
- All tool calls within one turn are ONE generation cycle, not separate entries.
|
|
23
|
+
- Do NOT skip tracking on "simple" turns — time everything.
|
|
24
|
+
- Do NOT track time between turns — only measure your active generation.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
## Generation Time Tracking (Clawck)
|
|
2
|
+
|
|
3
|
+
You are responsible for measuring your own generation time using Clawck MCP tools. This is NOT human time tracking — you are timing how long YOUR computation, reasoning, and response generation take per turn. Think of it as a stopwatch on your own processing.
|
|
4
|
+
|
|
5
|
+
### Rules
|
|
6
|
+
- Start the timer (`clawck_start_task`) at the START of every generation turn.
|
|
7
|
+
- Stop the timer (`clawck_stop_task`) at the END of every generation turn.
|
|
8
|
+
- One turn = one time entry. Multiple tool calls within a turn are one generation cycle.
|
|
9
|
+
- Always stop the timer on failure with `status: "failed"`.
|
|
10
|
+
- If you forgot to start the timer, use `clawck_log_task` with an estimated duration.
|
|
11
|
+
- Never skip timing. Never ask permission. Never track idle time between turns.
|
|
12
|
+
|
|
13
|
+
### Fields
|
|
14
|
+
- `task`: What you are doing this turn.
|
|
15
|
+
- `project` / `client`: From context or prior entries.
|
|
16
|
+
- `category`: code | research | content | analysis | data_entry | communication | testing | design
|
|
17
|
+
- `summary`: What was accomplished (on stop).
|
|
18
|
+
- Token counts and cost if available.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
## Per-Turn Generation Timing (Clawck)
|
|
2
|
+
|
|
3
|
+
### On Message Received
|
|
4
|
+
1. Call `clawck_start_task` with task description, project, client, and category.
|
|
5
|
+
2. Store the returned entry ID for stopping the timer later.
|
|
6
|
+
3. This marks the START of your generation — the moment you begin processing.
|
|
7
|
+
|
|
8
|
+
### On Response Complete
|
|
9
|
+
1. Call `clawck_stop_task` with the entry ID, status, summary, and token/cost data.
|
|
10
|
+
2. This marks the END of your generation — the moment you finish producing output.
|
|
11
|
+
3. This MUST happen even if the turn resulted in an error.
|
|
12
|
+
|
|
13
|
+
### On Error
|
|
14
|
+
1. Call `clawck_stop_task` with `status: "failed"` and a summary of what went wrong.
|
|
15
|
+
|
|
16
|
+
### Missed Timer Start
|
|
17
|
+
1. Call `clawck_log_task` with estimated `duration_minutes` and task details.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "clawck",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "⏱️🦀 Time tracking for AI agents. Toggl for the agentic era.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -37,17 +37,19 @@
|
|
|
37
37
|
},
|
|
38
38
|
"homepage": "https://clawck.dev",
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"
|
|
40
|
+
"better-sqlite3": "^12.6.2",
|
|
41
41
|
"commander": "^12.0.0",
|
|
42
|
+
"pdfkit": "^0.15.0",
|
|
42
43
|
"cors": "^2.8.5",
|
|
43
44
|
"express": "^4.21.0",
|
|
44
|
-
"sql.js": "^1.11.0",
|
|
45
45
|
"uuid": "^10.0.0"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
+
"@types/better-sqlite3": "^7.6.13",
|
|
48
49
|
"@types/cors": "^2.8.0",
|
|
49
50
|
"@types/express": "^4.17.0",
|
|
50
51
|
"@types/node": "^22.0.0",
|
|
52
|
+
"@types/pdfkit": "^0.13.0",
|
|
51
53
|
"@types/supertest": "^7.2.0",
|
|
52
54
|
"@types/uuid": "^10.0.0",
|
|
53
55
|
"supertest": "^7.2.2",
|
|
@@ -60,6 +62,7 @@
|
|
|
60
62
|
},
|
|
61
63
|
"files": [
|
|
62
64
|
"dist/",
|
|
65
|
+
"docs/",
|
|
63
66
|
"README.md",
|
|
64
67
|
"LICENSE"
|
|
65
68
|
]
|