clawck 0.1.3 → 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.
Files changed (77) hide show
  1. package/README.md +214 -166
  2. package/dist/cli/index.js +490 -53
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/core/clawck.d.ts +14 -3
  5. package/dist/core/clawck.d.ts.map +1 -1
  6. package/dist/core/clawck.js +41 -14
  7. package/dist/core/clawck.js.map +1 -1
  8. package/dist/core/database.d.ts +1 -0
  9. package/dist/core/database.d.ts.map +1 -1
  10. package/dist/core/database.js +26 -7
  11. package/dist/core/database.js.map +1 -1
  12. package/dist/core/patterns.d.ts +7 -0
  13. package/dist/core/patterns.d.ts.map +1 -0
  14. package/dist/core/patterns.js +36 -0
  15. package/dist/core/patterns.js.map +1 -0
  16. package/dist/core/types.d.ts +31 -0
  17. package/dist/core/types.d.ts.map +1 -1
  18. package/dist/core/types.js.map +1 -1
  19. package/dist/core/webhooks.d.ts +22 -0
  20. package/dist/core/webhooks.d.ts.map +1 -0
  21. package/dist/core/webhooks.js +70 -0
  22. package/dist/core/webhooks.js.map +1 -0
  23. package/dist/hooks/adapters.d.ts +8 -0
  24. package/dist/hooks/adapters.d.ts.map +1 -0
  25. package/dist/hooks/adapters.js +138 -0
  26. package/dist/hooks/adapters.js.map +1 -0
  27. package/dist/hooks/handler.d.ts +9 -0
  28. package/dist/hooks/handler.d.ts.map +1 -0
  29. package/dist/hooks/handler.js +90 -0
  30. package/dist/hooks/handler.js.map +1 -0
  31. package/dist/hooks/index.d.ts +10 -0
  32. package/dist/hooks/index.d.ts.map +1 -0
  33. package/dist/hooks/index.js +23 -0
  34. package/dist/hooks/index.js.map +1 -0
  35. package/dist/hooks/install.d.ts +16 -0
  36. package/dist/hooks/install.d.ts.map +1 -0
  37. package/dist/hooks/install.js +239 -0
  38. package/dist/hooks/install.js.map +1 -0
  39. package/dist/hooks/session.d.ts +10 -0
  40. package/dist/hooks/session.d.ts.map +1 -0
  41. package/dist/hooks/session.js +72 -0
  42. package/dist/hooks/session.js.map +1 -0
  43. package/dist/hooks/stdin.d.ts +6 -0
  44. package/dist/hooks/stdin.d.ts.map +1 -0
  45. package/dist/hooks/stdin.js +38 -0
  46. package/dist/hooks/stdin.js.map +1 -0
  47. package/dist/hooks/types.d.ts +23 -0
  48. package/dist/hooks/types.d.ts.map +1 -0
  49. package/dist/hooks/types.js +7 -0
  50. package/dist/hooks/types.js.map +1 -0
  51. package/dist/reports/html.d.ts +13 -0
  52. package/dist/reports/html.d.ts.map +1 -0
  53. package/dist/reports/html.js +321 -0
  54. package/dist/reports/html.js.map +1 -0
  55. package/dist/reports/pdf.d.ts +13 -0
  56. package/dist/reports/pdf.d.ts.map +1 -0
  57. package/dist/reports/pdf.js +169 -0
  58. package/dist/reports/pdf.js.map +1 -0
  59. package/dist/server/api.d.ts.map +1 -1
  60. package/dist/server/api.js +16 -0
  61. package/dist/server/api.js.map +1 -1
  62. package/dist/server/mcp.d.ts.map +1 -1
  63. package/dist/server/mcp.js +30 -9
  64. package/dist/server/mcp.js.map +1 -1
  65. package/docs/skills/clawck-setup.md +131 -0
  66. package/docs/skills/clawck-usage.md +148 -0
  67. package/docs/snippets/claude-md.txt +24 -0
  68. package/docs/snippets/hooks-claude.json +16 -0
  69. package/docs/snippets/hooks-cline.txt +10 -0
  70. package/docs/snippets/hooks-codex.json +16 -0
  71. package/docs/snippets/hooks-cursor.json +16 -0
  72. package/docs/snippets/hooks-gemini.json +16 -0
  73. package/docs/snippets/hooks-windsurf.json +16 -0
  74. package/docs/snippets/mcp-config.json +7 -0
  75. package/docs/snippets/openclaw-agent-md.txt +18 -0
  76. package/docs/snippets/openclaw-heartbeat-md.txt +17 -0
  77. package/package.json +4 -2
@@ -0,0 +1,321 @@
1
+ "use strict";
2
+ /**
3
+ * ⏱️🦀 Clawck — HTML Report Generation
4
+ * Generates interactive timesheet HTML reports.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.generateTimesheetHTML = generateTimesheetHTML;
8
+ function generateTimesheetHTML(summary, options) {
9
+ const title = options.title || 'Clawck Timesheet Report';
10
+ const entries = summary.entries;
11
+ const rawEntries = options.rawEntries || [];
12
+ // Group entries by date for calendar
13
+ const byDate = new Map();
14
+ for (const e of entries) {
15
+ const d = byDate.get(e.date) || { count: 0, hours: 0 };
16
+ d.count++;
17
+ d.hours += e.duration_minutes / 60;
18
+ byDate.set(e.date, d);
19
+ }
20
+ // Build CSV string
21
+ const csvHeader = 'Date,Agent,Client,Project,Task,Category,Duration (min),Tokens,Cost,Human Equiv Hrs,Status,Approved';
22
+ const csvRows = entries.map(e => {
23
+ const esc = (s) => `"${s.replace(/"/g, '""')}"`;
24
+ return [e.date, esc(e.agent), esc(e.client), esc(e.project), esc(e.task), e.category,
25
+ e.duration_minutes.toFixed(2), e.tokens_total, e.cost_usd.toFixed(4),
26
+ e.human_equiv_hours.toFixed(2), e.status, e.approved ? 'yes' : 'no'].join(',');
27
+ });
28
+ const csvContent = [csvHeader, ...csvRows].join('\\n');
29
+ // Calendar range
30
+ const startDate = summary.period_start.split('T')[0];
31
+ const endDate = summary.period_end.split('T')[0];
32
+ // Max hours for color scaling
33
+ const maxHours = Math.max(...[...byDate.values()].map(d => d.hours), 1);
34
+ // Build calendar HTML
35
+ const calendarDays = buildCalendarDays(startDate, endDate, byDate, maxHours);
36
+ // Build Gantt data from raw entries
37
+ const ganttHTML = buildGanttChart(rawEntries);
38
+ return `<!DOCTYPE html>
39
+ <html lang="en">
40
+ <head>
41
+ <meta charset="UTF-8">
42
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
43
+ <title>${escapeHtml(title)}</title>
44
+ <link rel="preconnect" href="https://fonts.googleapis.com">
45
+ <link href="https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
46
+ <style>
47
+ :root {
48
+ --bg: #0f1117;
49
+ --surface: #1a1d27;
50
+ --surface2: #242836;
51
+ --border: #2d3348;
52
+ --text: #e4e6ed;
53
+ --text-dim: #8b8fa3;
54
+ --accent: #6c63ff;
55
+ --green: #4ade80;
56
+ --red: #f87171;
57
+ --orange: #fb923c;
58
+ --blue: #60a5fa;
59
+ --cyan: #22d3ee;
60
+ --purple: #a78bfa;
61
+ --pink: #f472b6;
62
+ }
63
+ * { margin: 0; padding: 0; box-sizing: border-box; }
64
+ body { background: var(--bg); color: var(--text); font-family: 'DM Sans', sans-serif; padding: 2rem; }
65
+ .mono { font-family: 'JetBrains Mono', monospace; }
66
+ h1 { font-size: 1.8rem; font-weight: 700; margin-bottom: 0.25rem; }
67
+ .subtitle { color: var(--text-dim); font-size: 0.95rem; margin-bottom: 0.5rem; }
68
+ .meta { color: var(--text-dim); font-size: 0.8rem; margin-bottom: 1.5rem; }
69
+
70
+ /* Summary Cards */
71
+ .cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 1rem; margin-bottom: 2rem; }
72
+ .card { background: var(--surface); border: 1px solid var(--border); border-radius: 12px; padding: 1.2rem; }
73
+ .card-label { font-size: 0.75rem; color: var(--text-dim); text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 0.3rem; }
74
+ .card-value { font-family: 'JetBrains Mono', monospace; font-size: 1.4rem; font-weight: 600; }
75
+ .card-value.green { color: var(--green); }
76
+ .card-value.blue { color: var(--blue); }
77
+ .card-value.accent { color: var(--accent); }
78
+ .card-value.orange { color: var(--orange); }
79
+
80
+ /* Tabs */
81
+ .tabs { display: flex; gap: 0; border-bottom: 1px solid var(--border); margin-bottom: 1.5rem; }
82
+ .tab { padding: 0.7rem 1.5rem; cursor: pointer; color: var(--text-dim); font-size: 0.9rem; font-weight: 500; border-bottom: 2px solid transparent; transition: all 0.2s; }
83
+ .tab:hover { color: var(--text); }
84
+ .tab.active { color: var(--accent); border-bottom-color: var(--accent); }
85
+ .tab-content { display: none; }
86
+ .tab-content.active { display: block; }
87
+
88
+ /* Calendar */
89
+ .calendar-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
90
+ .cal-header { font-size: 0.7rem; color: var(--text-dim); text-align: center; padding: 4px; font-weight: 600; }
91
+ .cal-day { background: var(--surface); border: 1px solid var(--border); border-radius: 6px; padding: 6px; min-height: 60px; font-size: 0.75rem; }
92
+ .cal-day.empty { background: transparent; border-color: transparent; }
93
+ .cal-day .day-num { font-weight: 600; margin-bottom: 2px; }
94
+ .cal-day .day-info { font-family: 'JetBrains Mono', monospace; font-size: 0.65rem; color: var(--text-dim); }
95
+ .cal-day.has-entries { border-color: var(--accent); }
96
+
97
+ /* Table */
98
+ .data-table { width: 100%; border-collapse: collapse; font-size: 0.82rem; }
99
+ .data-table th { background: var(--surface2); padding: 8px 10px; text-align: left; font-weight: 600; font-size: 0.75rem; color: var(--text-dim); text-transform: uppercase; letter-spacing: 0.03em; cursor: pointer; user-select: none; border-bottom: 1px solid var(--border); white-space: nowrap; }
100
+ .data-table th:hover { color: var(--text); }
101
+ .data-table td { padding: 7px 10px; border-bottom: 1px solid var(--border); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 200px; }
102
+ .data-table tr:hover td { background: var(--surface); }
103
+ .data-table .mono { font-family: 'JetBrains Mono', monospace; font-size: 0.78rem; }
104
+ .status-completed { color: var(--green); }
105
+ .status-running { color: var(--orange); }
106
+ .status-failed { color: var(--red); }
107
+
108
+ /* Gantt */
109
+ .gantt-container { overflow-x: auto; }
110
+ .gantt-row { display: flex; align-items: center; margin-bottom: 4px; min-height: 28px; }
111
+ .gantt-label { width: 120px; flex-shrink: 0; font-size: 0.75rem; color: var(--text-dim); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
112
+ .gantt-bars { flex: 1; position: relative; height: 22px; background: var(--surface); border-radius: 4px; }
113
+ .gantt-bar { position: absolute; height: 18px; top: 2px; border-radius: 3px; opacity: 0.85; min-width: 3px; }
114
+ .gantt-bar[title]:hover { opacity: 1; }
115
+ .gantt-axis { display: flex; margin-left: 120px; margin-bottom: 8px; }
116
+ .gantt-tick { flex: 1; font-size: 0.65rem; color: var(--text-dim); font-family: 'JetBrains Mono', monospace; }
117
+
118
+ /* CSV */
119
+ .csv-container { position: relative; }
120
+ .csv-pre { background: var(--surface); border: 1px solid var(--border); border-radius: 8px; padding: 1rem; overflow-x: auto; font-family: 'JetBrains Mono', monospace; font-size: 0.75rem; line-height: 1.6; white-space: pre; max-height: 500px; }
121
+ .copy-btn { position: absolute; top: 8px; right: 8px; background: var(--accent); color: #fff; border: none; border-radius: 6px; padding: 6px 14px; cursor: pointer; font-size: 0.78rem; font-weight: 500; }
122
+ .copy-btn:hover { opacity: 0.9; }
123
+
124
+ /* Category colors */
125
+ .cat-research { background: var(--blue); }
126
+ .cat-content { background: var(--purple); }
127
+ .cat-code { background: var(--green); }
128
+ .cat-data_entry { background: var(--cyan); }
129
+ .cat-design { background: var(--pink); }
130
+ .cat-communication { background: var(--orange); }
131
+ .cat-analysis { background: #818cf8; }
132
+ .cat-testing { background: #fbbf24; }
133
+ .cat-planning { background: #34d399; }
134
+ .cat-other { background: var(--text-dim); }
135
+ </style>
136
+ </head>
137
+ <body>
138
+ <h1>${escapeHtml(title)}</h1>
139
+ ${options.clientName ? `<div class="subtitle">Client: ${escapeHtml(options.clientName)}</div>` : ''}
140
+ <div class="subtitle">Period: ${escapeHtml(options.dateRange)}</div>
141
+ <div class="meta">Generated ${new Date().toISOString()}</div>
142
+
143
+ <div class="cards">
144
+ <div class="card"><div class="card-label">Agent Hours</div><div class="card-value mono blue">${summary.total_agent_hours.toFixed(2)}</div></div>
145
+ <div class="card"><div class="card-label">Human Equiv</div><div class="card-value mono accent">${summary.total_human_equiv_hours.toFixed(2)} hrs</div></div>
146
+ <div class="card"><div class="card-label">Cost</div><div class="card-value mono orange">$${summary.total_cost_usd.toFixed(2)}</div></div>
147
+ <div class="card"><div class="card-label">Savings</div><div class="card-value mono green">$${summary.total_savings_usd.toFixed(0)}</div></div>
148
+ <div class="card"><div class="card-label">Entries</div><div class="card-value mono">${summary.total_entries}</div></div>
149
+ <div class="card"><div class="card-label">Tokens</div><div class="card-value mono">${summary.total_tokens.toLocaleString()}</div></div>
150
+ </div>
151
+
152
+ <div class="tabs">
153
+ <div class="tab active" data-tab="calendar">Calendar</div>
154
+ <div class="tab" data-tab="table">Table</div>
155
+ <div class="tab" data-tab="gantt">Gantt</div>
156
+ <div class="tab" data-tab="csv">CSV</div>
157
+ </div>
158
+
159
+ <div id="tab-calendar" class="tab-content active">
160
+ <div class="calendar-grid">
161
+ <div class="cal-header">Sun</div><div class="cal-header">Mon</div><div class="cal-header">Tue</div>
162
+ <div class="cal-header">Wed</div><div class="cal-header">Thu</div><div class="cal-header">Fri</div><div class="cal-header">Sat</div>
163
+ ${calendarDays}
164
+ </div>
165
+ </div>
166
+
167
+ <div id="tab-table" class="tab-content">
168
+ <table class="data-table" id="entries-table">
169
+ <thead>
170
+ <tr>
171
+ <th data-col="0">Date</th><th data-col="1">Agent</th><th data-col="2">Client</th>
172
+ <th data-col="3">Project</th><th data-col="4">Task</th><th data-col="5">Category</th>
173
+ <th data-col="6">Duration</th><th data-col="7">Tokens</th><th data-col="8">Cost</th>
174
+ <th data-col="9">Human Equiv</th><th data-col="10">Status</th><th data-col="11">Approved</th>
175
+ </tr>
176
+ </thead>
177
+ <tbody>
178
+ ${entries.map(e => `<tr>
179
+ <td class="mono">${e.date}</td><td>${escapeHtml(e.agent)}</td><td>${escapeHtml(e.client)}</td>
180
+ <td>${escapeHtml(e.project)}</td><td title="${escapeHtml(e.task)}">${escapeHtml(e.task)}</td><td>${e.category}</td>
181
+ <td class="mono">${formatMins(e.duration_minutes)}</td><td class="mono">${e.tokens_total.toLocaleString()}</td>
182
+ <td class="mono">$${e.cost_usd.toFixed(4)}</td><td class="mono">${e.human_equiv_hours.toFixed(2)}h</td>
183
+ <td class="status-${e.status}">${e.status}</td><td>${e.approved ? 'Yes' : '-'}</td>
184
+ </tr>`).join('\n')}
185
+ </tbody>
186
+ </table>
187
+ </div>
188
+
189
+ <div id="tab-gantt" class="tab-content">
190
+ ${ganttHTML}
191
+ </div>
192
+
193
+ <div id="tab-csv" class="tab-content">
194
+ <div class="csv-container">
195
+ <button class="copy-btn" onclick="copyCSV()">Copy</button>
196
+ <pre class="csv-pre" id="csv-data">${escapeHtml([csvHeader, ...csvRows].join('\n'))}</pre>
197
+ </div>
198
+ </div>
199
+
200
+ <script>
201
+ // Tab switching
202
+ document.querySelectorAll('.tab').forEach(tab => {
203
+ tab.addEventListener('click', () => {
204
+ document.querySelectorAll('.tab').forEach(t => t.classList.remove('active'));
205
+ document.querySelectorAll('.tab-content').forEach(c => c.classList.remove('active'));
206
+ tab.classList.add('active');
207
+ document.getElementById('tab-' + tab.dataset.tab).classList.add('active');
208
+ });
209
+ });
210
+
211
+ // Table sorting
212
+ document.querySelectorAll('#entries-table th').forEach(th => {
213
+ let asc = true;
214
+ th.addEventListener('click', () => {
215
+ const col = parseInt(th.dataset.col);
216
+ const tbody = document.querySelector('#entries-table tbody');
217
+ const rows = Array.from(tbody.querySelectorAll('tr'));
218
+ rows.sort((a, b) => {
219
+ const av = a.children[col].textContent.trim();
220
+ const bv = b.children[col].textContent.trim();
221
+ const an = parseFloat(av.replace(/[^0-9.-]/g, ''));
222
+ const bn = parseFloat(bv.replace(/[^0-9.-]/g, ''));
223
+ if (!isNaN(an) && !isNaN(bn)) return asc ? an - bn : bn - an;
224
+ return asc ? av.localeCompare(bv) : bv.localeCompare(av);
225
+ });
226
+ rows.forEach(r => tbody.appendChild(r));
227
+ asc = !asc;
228
+ });
229
+ });
230
+
231
+ // Copy CSV
232
+ function copyCSV() {
233
+ const text = document.getElementById('csv-data').textContent;
234
+ navigator.clipboard.writeText(text).then(() => {
235
+ const btn = document.querySelector('.copy-btn');
236
+ btn.textContent = 'Copied!';
237
+ setTimeout(() => btn.textContent = 'Copy', 2000);
238
+ });
239
+ }
240
+ </script>
241
+ </body>
242
+ </html>`;
243
+ }
244
+ function escapeHtml(str) {
245
+ return str.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
246
+ }
247
+ function formatMins(mins) {
248
+ if (mins < 1)
249
+ return `${Math.round(mins * 60)}s`;
250
+ if (mins < 60)
251
+ return `${Math.round(mins)}m`;
252
+ const h = Math.floor(mins / 60);
253
+ const m = Math.round(mins % 60);
254
+ return m > 0 ? `${h}h ${m}m` : `${h}h`;
255
+ }
256
+ function buildCalendarDays(startStr, endStr, byDate, maxHours) {
257
+ const start = new Date(startStr + 'T00:00:00');
258
+ const end = new Date(endStr + 'T00:00:00');
259
+ const days = [];
260
+ // Pad to start of week (Sunday)
261
+ const firstDay = new Date(start);
262
+ firstDay.setDate(firstDay.getDate() - firstDay.getDay());
263
+ const current = new Date(firstDay);
264
+ while (current <= end || current.getDay() !== 0) {
265
+ const dateStr = current.toISOString().split('T')[0];
266
+ const inRange = current >= start && current <= end;
267
+ const data = byDate.get(dateStr);
268
+ if (!inRange && !data) {
269
+ days.push(`<div class="cal-day empty"></div>`);
270
+ }
271
+ else {
272
+ const hasEntries = data && data.count > 0;
273
+ const intensity = hasEntries ? Math.min(data.hours / maxHours, 1) : 0;
274
+ const bgStyle = hasEntries ? `background: rgba(108,99,255,${0.1 + intensity * 0.5})` : '';
275
+ days.push(`<div class="cal-day${hasEntries ? ' has-entries' : ''}" style="${bgStyle}">
276
+ <div class="day-num">${current.getDate()}</div>
277
+ ${hasEntries ? `<div class="day-info">${data.count} entries<br>${data.hours.toFixed(1)}h</div>` : ''}
278
+ </div>`);
279
+ }
280
+ current.setDate(current.getDate() + 1);
281
+ if (current > end && current.getDay() === 0)
282
+ break;
283
+ }
284
+ return days.join('\n');
285
+ }
286
+ function buildGanttChart(rawEntries) {
287
+ if (rawEntries.length === 0)
288
+ return '<p style="color:var(--text-dim)">No entries to display.</p>';
289
+ // Group by date
290
+ const byDate = new Map();
291
+ for (const e of rawEntries) {
292
+ const date = e.start.split('T')[0];
293
+ const arr = byDate.get(date) || [];
294
+ arr.push(e);
295
+ byDate.set(date, arr);
296
+ }
297
+ const categoryColors = {
298
+ research: 'cat-research', content: 'cat-content', code: 'cat-code',
299
+ data_entry: 'cat-data_entry', design: 'cat-design', communication: 'cat-communication',
300
+ analysis: 'cat-analysis', testing: 'cat-testing', planning: 'cat-planning', other: 'cat-other',
301
+ };
302
+ const sortedDates = [...byDate.keys()].sort();
303
+ const rows = [];
304
+ // Axis
305
+ rows.push(`<div class="gantt-axis">${Array.from({ length: 24 }, (_, i) => `<div class="gantt-tick">${String(i).padStart(2, '0')}</div>`).join('')}</div>`);
306
+ for (const date of sortedDates.slice(-14)) { // Limit to last 14 days
307
+ const dateEntries = byDate.get(date);
308
+ const bars = dateEntries.map(e => {
309
+ const startHour = new Date(e.start).getHours() + new Date(e.start).getMinutes() / 60;
310
+ const endTime = e.end ? new Date(e.end) : new Date();
311
+ const durHours = (endTime.getTime() - new Date(e.start).getTime()) / 3600000;
312
+ const left = (startHour / 24) * 100;
313
+ const width = Math.max((durHours / 24) * 100, 0.5);
314
+ const cls = categoryColors[e.category] || 'cat-other';
315
+ return `<div class="gantt-bar ${cls}" style="left:${left}%;width:${width}%" title="${escapeHtml(e.task)} (${e.category}, ${formatMins(durHours * 60)})"></div>`;
316
+ }).join('');
317
+ rows.push(`<div class="gantt-row"><div class="gantt-label">${date}</div><div class="gantt-bars">${bars}</div></div>`);
318
+ }
319
+ return `<div class="gantt-container">${rows.join('\n')}</div>`;
320
+ }
321
+ //# sourceMappingURL=html.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/reports/html.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * ⏱️🦀 Clawck — PDF Report Generation
3
+ * Generates timesheet PDF reports using pdfkit.
4
+ */
5
+ import { TimesheetSummary } from '../core/types';
6
+ export interface PDFReportOptions {
7
+ title?: string;
8
+ clientName?: string;
9
+ dateRange: string;
10
+ outputPath: string;
11
+ }
12
+ export declare function generateTimesheetPDF(summary: TimesheetSummary, options: PDFReportOptions): Promise<void>;
13
+ //# sourceMappingURL=pdf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdf.d.ts","sourceRoot":"","sources":["../../src/reports/pdf.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,IAAI,CAAC,CA8If"}
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+ /**
3
+ * ⏱️🦀 Clawck — PDF Report Generation
4
+ * Generates timesheet PDF reports using pdfkit.
5
+ */
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.generateTimesheetPDF = generateTimesheetPDF;
11
+ const pdfkit_1 = __importDefault(require("pdfkit"));
12
+ const fs_1 = __importDefault(require("fs"));
13
+ function generateTimesheetPDF(summary, options) {
14
+ return new Promise((resolve, reject) => {
15
+ const doc = new pdfkit_1.default({ size: 'A4', margin: 50 });
16
+ const stream = fs_1.default.createWriteStream(options.outputPath);
17
+ stream.on('finish', resolve);
18
+ stream.on('error', reject);
19
+ doc.pipe(stream);
20
+ const pageWidth = doc.page.width - 100; // margins
21
+ // ─── Header ──────────────────────────────────────────
22
+ doc.fontSize(22).font('Helvetica-Bold')
23
+ .text(options.title || 'Clawck Timesheet Report', { align: 'center' });
24
+ doc.moveDown(0.3);
25
+ if (options.clientName) {
26
+ doc.fontSize(14).font('Helvetica')
27
+ .text(`Client: ${options.clientName}`, { align: 'center' });
28
+ }
29
+ doc.fontSize(11).font('Helvetica')
30
+ .text(`Period: ${options.dateRange}`, { align: 'center' });
31
+ doc.moveDown(1);
32
+ drawHorizontalLine(doc, pageWidth);
33
+ doc.moveDown(0.5);
34
+ // ─── Summary Stats ──────────────────────────────────
35
+ doc.fontSize(14).font('Helvetica-Bold').text('Summary');
36
+ doc.moveDown(0.3);
37
+ doc.fontSize(10).font('Helvetica');
38
+ const stats = [
39
+ ['Agent Hours', `${summary.total_agent_hours.toFixed(2)} hrs`],
40
+ ['Human Equiv Hours', `${summary.total_human_equiv_hours.toFixed(2)} hrs`],
41
+ ['Agent Cost', `$${summary.total_cost_usd.toFixed(2)}`],
42
+ ['Est. Savings', `$${summary.total_savings_usd.toFixed(0)}`],
43
+ ['Total Entries', String(summary.total_entries)],
44
+ ['Total Tokens', summary.total_tokens.toLocaleString()],
45
+ ];
46
+ for (const [label, value] of stats) {
47
+ doc.text(`${label}: ${value}`);
48
+ }
49
+ doc.moveDown(1);
50
+ // ─── By Project ─────────────────────────────────────
51
+ if (summary.by_project.length > 0) {
52
+ doc.fontSize(14).font('Helvetica-Bold').text('By Project');
53
+ doc.moveDown(0.3);
54
+ const projHeaders = ['Project', 'Client', 'Agent Hrs', 'Human Equiv', 'Cost'];
55
+ const projWidths = [pageWidth * 0.25, pageWidth * 0.2, pageWidth * 0.18, pageWidth * 0.2, pageWidth * 0.17];
56
+ drawTableHeader(doc, projHeaders, projWidths);
57
+ for (const p of summary.by_project) {
58
+ drawTableRow(doc, [
59
+ p.project, p.client,
60
+ p.agent_hours.toFixed(2), p.human_equiv_hours.toFixed(2),
61
+ `$${p.cost_usd.toFixed(2)}`,
62
+ ], projWidths);
63
+ }
64
+ doc.moveDown(1);
65
+ }
66
+ // ─── By Agent ───────────────────────────────────────
67
+ if (summary.by_agent.length > 0) {
68
+ checkPageBreak(doc);
69
+ doc.fontSize(14).font('Helvetica-Bold').text('By Agent');
70
+ doc.moveDown(0.3);
71
+ const agentHeaders = ['Agent', 'Model', 'Hours', 'Success Rate'];
72
+ const agentWidths = [pageWidth * 0.3, pageWidth * 0.3, pageWidth * 0.2, pageWidth * 0.2];
73
+ drawTableHeader(doc, agentHeaders, agentWidths);
74
+ for (const a of summary.by_agent) {
75
+ drawTableRow(doc, [
76
+ a.agent, a.model,
77
+ a.agent_hours.toFixed(2), `${a.success_rate}%`,
78
+ ], agentWidths);
79
+ }
80
+ doc.moveDown(1);
81
+ }
82
+ // ─── By Category ────────────────────────────────────
83
+ if (summary.by_category.length > 0) {
84
+ checkPageBreak(doc);
85
+ doc.fontSize(14).font('Helvetica-Bold').text('By Category');
86
+ doc.moveDown(0.3);
87
+ const catHeaders = ['Category', 'Agent Hrs', 'Human Equiv', 'Cost', 'Savings'];
88
+ const catWidths = [pageWidth * 0.25, pageWidth * 0.18, pageWidth * 0.2, pageWidth * 0.17, pageWidth * 0.2];
89
+ drawTableHeader(doc, catHeaders, catWidths);
90
+ for (const c of summary.by_category) {
91
+ drawTableRow(doc, [
92
+ c.category, c.agent_hours.toFixed(2),
93
+ c.human_equiv_hours.toFixed(2),
94
+ `$${c.cost_usd.toFixed(2)}`, `$${c.savings_usd.toFixed(0)}`,
95
+ ], catWidths);
96
+ }
97
+ doc.moveDown(1);
98
+ }
99
+ // ─── Entry Details ─────────────────────────────────────
100
+ if (summary.entries.length > 0) {
101
+ checkPageBreak(doc);
102
+ doc.fontSize(14).font('Helvetica-Bold').fillColor('#000000').text('Entry Details');
103
+ doc.moveDown(0.3);
104
+ const detailHeaders = ['Date', 'Agent', 'Project', 'Task', 'Duration', 'Status', 'Approved'];
105
+ const detailWidths = [pageWidth * 0.13, pageWidth * 0.15, pageWidth * 0.14, pageWidth * 0.28, pageWidth * 0.1, pageWidth * 0.1, pageWidth * 0.1];
106
+ drawTableHeader(doc, detailHeaders, detailWidths);
107
+ const maxRows = Math.min(summary.entries.length, 100);
108
+ for (let i = 0; i < maxRows; i++) {
109
+ checkPageBreak(doc);
110
+ const e = summary.entries[i];
111
+ const taskTrunc = e.task.length > 25 ? e.task.slice(0, 22) + '...' : e.task;
112
+ const durStr = e.duration_minutes < 60
113
+ ? `${Math.round(e.duration_minutes)}m`
114
+ : `${Math.floor(e.duration_minutes / 60)}h ${Math.round(e.duration_minutes % 60)}m`;
115
+ drawTableRow(doc, [
116
+ e.date, e.agent, e.project, taskTrunc, durStr, e.status, e.approved ? 'Yes' : '-',
117
+ ], detailWidths);
118
+ }
119
+ if (summary.entries.length > 100) {
120
+ doc.moveDown(0.3);
121
+ doc.fontSize(8).font('Helvetica').fillColor('#888888')
122
+ .text(`Showing 100 of ${summary.entries.length} entries. Use HTML report for full data.`);
123
+ }
124
+ doc.moveDown(1);
125
+ }
126
+ // ─── Footer ─────────────────────────────────────────
127
+ doc.moveDown(2);
128
+ doc.fontSize(8).font('Helvetica').fillColor('#888888')
129
+ .text(`Generated by Clawck on ${new Date().toISOString()}`, { align: 'center' });
130
+ doc.end();
131
+ });
132
+ }
133
+ function drawHorizontalLine(doc, width) {
134
+ const x = doc.x;
135
+ const y = doc.y;
136
+ doc.moveTo(x, y).lineTo(x + width, y).strokeColor('#cccccc').stroke();
137
+ }
138
+ function drawTableHeader(doc, headers, widths) {
139
+ const startX = doc.x;
140
+ const y = doc.y;
141
+ doc.fontSize(9).font('Helvetica-Bold').fillColor('#000000');
142
+ let x = startX;
143
+ for (let i = 0; i < headers.length; i++) {
144
+ doc.text(headers[i], x, y, { width: widths[i], continued: false });
145
+ x += widths[i];
146
+ }
147
+ doc.moveDown(0.2);
148
+ const lineY = doc.y;
149
+ doc.moveTo(startX, lineY).lineTo(startX + widths.reduce((a, b) => a + b, 0), lineY)
150
+ .strokeColor('#999999').stroke();
151
+ doc.moveDown(0.2);
152
+ }
153
+ function drawTableRow(doc, cells, widths) {
154
+ const startX = doc.x;
155
+ const y = doc.y;
156
+ doc.fontSize(9).font('Helvetica').fillColor('#000000');
157
+ let x = startX;
158
+ for (let i = 0; i < cells.length; i++) {
159
+ doc.text(cells[i], x, y, { width: widths[i], continued: false });
160
+ x += widths[i];
161
+ }
162
+ doc.moveDown(0.1);
163
+ }
164
+ function checkPageBreak(doc) {
165
+ if (doc.y > doc.page.height - 150) {
166
+ doc.addPage();
167
+ }
168
+ }
169
+ //# sourceMappingURL=pdf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdf.js","sourceRoot":"","sources":["../../src/reports/pdf.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/server/api.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,OAAO,MAAM,SAAS,CAAC;AAG9B,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,YAAY,EAA6C,MAAM,eAAe,CAAC;AACxF,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C,wBAAsB,YAAY,CAAC,MAAM,GAAE,OAAO,CAAC,YAAY,CAAM,GAAG,OAAO,CAAC;IAAE,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,WAAW,CAAA;CAAE,CAAC,CAwLnJ;AAED,wBAAsB,WAAW,CAAC,MAAM,GAAE,OAAO,CAAC,YAAY,CAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYnF"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/server/api.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,OAAO,MAAM,SAAS,CAAC;AAG9B,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,YAAY,EAA6C,MAAM,eAAe,CAAC;AACxF,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C,wBAAsB,YAAY,CAAC,MAAM,GAAE,OAAO,CAAC,YAAY,CAAM,GAAG,OAAO,CAAC;IAAE,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,WAAW,CAAA;CAAE,CAAC,CAyMnJ;AAED,wBAAsB,WAAW,CAAC,MAAM,GAAE,OAAO,CAAC,YAAY,CAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYnF"}
@@ -84,6 +84,18 @@ async function createServer(config = {}) {
84
84
  return res.status(404).json({ error: 'Entry not found' });
85
85
  res.json(entry);
86
86
  });
87
+ // ─── Approve Entry ───────────────────────────────────────
88
+ app.post('/api/entries/:id/approve', (req, res) => {
89
+ try {
90
+ const entry = clawck.approve(req.params.id);
91
+ if (!entry)
92
+ return res.status(404).json({ error: 'Entry not found' });
93
+ res.json(entry);
94
+ }
95
+ catch (err) {
96
+ res.status(400).json({ error: err.message });
97
+ }
98
+ });
87
99
  // ─── Query Entries ─────────────────────────────────────
88
100
  app.get('/api/entries', (req, res) => {
89
101
  const entries = clawck.query({
@@ -160,6 +172,10 @@ async function createServer(config = {}) {
160
172
  }
161
173
  });
162
174
  // ─── Sync Status ──────────────────────────────────────
175
+ // Start idle monitor if webhooks configured
176
+ if (fullConfig.webhooks && fullConfig.webhooks.length > 0) {
177
+ clawck.webhooks.startIdleMonitor(clawck.database);
178
+ }
163
179
  let syncManager = null;
164
180
  if (fullConfig.remote_sources && fullConfig.remote_sources.length > 0) {
165
181
  syncManager = new sync_1.SyncManager(fullConfig, clawck.database);
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/server/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/server/api.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/server/mcp.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAmC,MAAM,eAAe,CAAC;AA8I9E,wBAAsB,cAAc,CAAC,MAAM,GAAE,OAAO,CAAC,YAAY,CAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiMtF"}
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/server/mcp.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAmC,MAAM,eAAe,CAAC;AA8I9E,wBAAsB,cAAc,CAAC,MAAM,GAAE,OAAO,CAAC,YAAY,CAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsNtF"}