clawck 0.3.0 → 0.4.1
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 +44 -15
- package/dist/cli/index.js +466 -43
- package/dist/cli/index.js.map +1 -1
- package/dist/core/atp.d.ts +31 -0
- package/dist/core/atp.d.ts.map +1 -0
- package/dist/core/atp.js +96 -0
- package/dist/core/atp.js.map +1 -0
- package/dist/core/benchmarks.d.ts +20 -0
- package/dist/core/benchmarks.d.ts.map +1 -0
- package/dist/core/benchmarks.js +86 -0
- package/dist/core/benchmarks.js.map +1 -0
- package/dist/core/clawck.d.ts +26 -1
- package/dist/core/clawck.d.ts.map +1 -1
- package/dist/core/clawck.js +101 -6
- package/dist/core/clawck.js.map +1 -1
- package/dist/core/database.d.ts +15 -1
- package/dist/core/database.d.ts.map +1 -1
- package/dist/core/database.js +157 -7
- package/dist/core/database.js.map +1 -1
- package/dist/core/personal.d.ts +26 -0
- package/dist/core/personal.d.ts.map +1 -0
- package/dist/core/personal.js +60 -0
- package/dist/core/personal.js.map +1 -0
- package/dist/core/runtime.d.ts +17 -0
- package/dist/core/runtime.d.ts.map +1 -0
- package/dist/core/runtime.js +43 -0
- package/dist/core/runtime.js.map +1 -0
- package/dist/core/types.d.ts +62 -2
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +9 -2
- package/dist/core/types.js.map +1 -1
- package/dist/hooks/adapters.d.ts.map +1 -1
- package/dist/hooks/adapters.js +14 -0
- package/dist/hooks/adapters.js.map +1 -1
- package/dist/hooks/handler.d.ts.map +1 -1
- package/dist/hooks/handler.js +4 -1
- package/dist/hooks/handler.js.map +1 -1
- package/dist/hooks/install.d.ts.map +1 -1
- package/dist/hooks/install.js +12 -4
- package/dist/hooks/install.js.map +1 -1
- package/dist/hooks/types.d.ts +3 -0
- package/dist/hooks/types.d.ts.map +1 -1
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -1
- package/dist/index.js.map +1 -1
- package/dist/reports/html.d.ts +2 -1
- package/dist/reports/html.d.ts.map +1 -1
- package/dist/reports/html.js +53 -21
- package/dist/reports/html.js.map +1 -1
- package/dist/reports/pdf.d.ts +2 -1
- package/dist/reports/pdf.d.ts.map +1 -1
- package/dist/reports/pdf.js +26 -18
- package/dist/reports/pdf.js.map +1 -1
- package/dist/reports/periods.d.ts +18 -0
- package/dist/reports/periods.d.ts.map +1 -0
- package/dist/reports/periods.js +55 -0
- package/dist/reports/periods.js.map +1 -0
- package/dist/server/api.d.ts.map +1 -1
- package/dist/server/api.js +140 -2
- package/dist/server/api.js.map +1 -1
- package/dist/server/mcp.js +1 -1
- package/docs/atp-schema.json +298 -0
- package/docs/atp-spec-v0.2.md +216 -0
- package/docs/benchmarks-sources.md +202 -0
- package/docs/platform-testing-guide.md +423 -0
- package/docs/skills/clawck-usage.md +1 -1
- package/docs/snippets/claude-md.txt +16 -7
- package/docs/snippets/hooks-claude.json +12 -4
- package/package.json +1 -1
package/dist/reports/html.js
CHANGED
|
@@ -9,6 +9,16 @@ function generateTimesheetHTML(summary, options) {
|
|
|
9
9
|
const title = options.title || 'Clawck Timesheet Report';
|
|
10
10
|
const entries = summary.entries;
|
|
11
11
|
const rawEntries = options.rawEntries || [];
|
|
12
|
+
const style = options.style || 'full';
|
|
13
|
+
// Determine which sections to show based on style
|
|
14
|
+
const showCards = style !== 'table' && style !== 'calendar' && style !== 'visual';
|
|
15
|
+
const showCalendar = style === 'full' || style === 'visual' || style === 'calendar';
|
|
16
|
+
const showTable = style === 'full' || style === 'table';
|
|
17
|
+
const showGantt = style === 'full' || style === 'visual';
|
|
18
|
+
const showCSV = style === 'full';
|
|
19
|
+
const showTabs = [showCalendar, showTable, showGantt, showCSV].filter(Boolean).length > 1;
|
|
20
|
+
const isShort = style === 'short';
|
|
21
|
+
const isText = style === 'text';
|
|
12
22
|
// Group entries by date for calendar
|
|
13
23
|
const byDate = new Map();
|
|
14
24
|
for (const e of entries) {
|
|
@@ -140,62 +150,67 @@ ${options.clientName ? `<div class="subtitle">Client: ${escapeHtml(options.clien
|
|
|
140
150
|
<div class="subtitle">Period: ${escapeHtml(options.dateRange)}</div>
|
|
141
151
|
<div class="meta">Generated ${new Date().toISOString()}</div>
|
|
142
152
|
|
|
143
|
-
|
|
144
|
-
|
|
153
|
+
${isText ? `<pre class="csv-pre" style="margin-top:1.5rem">${escapeHtml(buildTextReport(summary))}</pre>` : `
|
|
154
|
+
${showCards ? `<div class="cards">
|
|
155
|
+
<div class="card"><div class="card-label">Wall-Clock Hours</div><div class="card-value mono blue">${summary.total_agent_hours.toFixed(2)}</div></div>
|
|
156
|
+
<div class="card"><div class="card-label">Agent Runtime (est.)</div><div class="card-value mono" style="color:#22d3ee">${formatMins(entries.reduce((s, e) => s + (e.agent_runtime_minutes || 0), 0))}</div></div>
|
|
145
157
|
<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
158
|
<div class="card"><div class="card-label">Cost</div><div class="card-value mono orange">$${summary.total_cost_usd.toFixed(2)}</div></div>
|
|
147
159
|
<div class="card"><div class="card-label">Savings</div><div class="card-value mono green">$${summary.total_savings_usd.toFixed(0)}</div></div>
|
|
148
160
|
<div class="card"><div class="card-label">Entries</div><div class="card-value mono">${summary.total_entries}</div></div>
|
|
149
161
|
<div class="card"><div class="card-label">Tokens</div><div class="card-value mono">${summary.total_tokens.toLocaleString()}</div></div>
|
|
150
|
-
</div
|
|
162
|
+
</div>` : ''}
|
|
151
163
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
</div
|
|
164
|
+
${isShort ? '' : `
|
|
165
|
+
${showTabs ? `<div class="tabs">
|
|
166
|
+
${showCalendar ? `<div class="tab${showCalendar && !showTable ? ' active' : (showCalendar ? ' active' : '')}" data-tab="calendar">Calendar</div>` : ''}
|
|
167
|
+
${showTable ? `<div class="tab${!showCalendar ? ' active' : ''}" data-tab="table">Table</div>` : ''}
|
|
168
|
+
${showGantt ? `<div class="tab" data-tab="gantt">Gantt</div>` : ''}
|
|
169
|
+
${showCSV ? `<div class="tab" data-tab="csv">CSV</div>` : ''}
|
|
170
|
+
</div>` : ''}
|
|
158
171
|
|
|
159
|
-
|
|
172
|
+
${showCalendar ? `<div id="tab-calendar" class="tab-content${showCalendar ? ' active' : ''}">
|
|
160
173
|
<div class="calendar-grid">
|
|
161
174
|
<div class="cal-header">Sun</div><div class="cal-header">Mon</div><div class="cal-header">Tue</div>
|
|
162
175
|
<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
176
|
${calendarDays}
|
|
164
177
|
</div>
|
|
165
|
-
</div
|
|
178
|
+
</div>` : ''}
|
|
166
179
|
|
|
167
|
-
|
|
180
|
+
${showTable ? `<div id="tab-table" class="tab-content${!showCalendar ? ' active' : ''}">
|
|
168
181
|
<table class="data-table" id="entries-table">
|
|
169
182
|
<thead>
|
|
170
183
|
<tr>
|
|
171
184
|
<th data-col="0">Date</th><th data-col="1">Agent</th><th data-col="2">Client</th>
|
|
172
185
|
<th data-col="3">Project</th><th data-col="4">Task</th><th data-col="5">Category</th>
|
|
173
|
-
<th data-col="6">
|
|
174
|
-
<th data-col="
|
|
186
|
+
<th data-col="6">Wall Clock</th><th data-col="7">Agent Runtime</th><th data-col="8">Tokens</th><th data-col="9">Cost</th>
|
|
187
|
+
<th data-col="10">Human Equiv</th><th data-col="11">Status</th><th data-col="12">Approved</th>
|
|
175
188
|
</tr>
|
|
176
189
|
</thead>
|
|
177
190
|
<tbody>
|
|
178
191
|
${entries.map(e => `<tr>
|
|
179
192
|
<td class="mono">${e.date}</td><td>${escapeHtml(e.agent)}</td><td>${escapeHtml(e.client)}</td>
|
|
180
193
|
<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>
|
|
194
|
+
<td class="mono">${formatMins(e.duration_minutes)}</td><td class="mono">${e.agent_runtime_minutes != null ? formatMins(e.agent_runtime_minutes) : '-'}</td><td class="mono">${e.tokens_total.toLocaleString()}</td>
|
|
182
195
|
<td class="mono">$${e.cost_usd.toFixed(4)}</td><td class="mono">${e.human_equiv_hours.toFixed(2)}h</td>
|
|
183
196
|
<td class="status-${e.status}">${e.status}</td><td>${e.approved ? 'Yes' : '-'}</td>
|
|
184
197
|
</tr>`).join('\n')}
|
|
185
198
|
</tbody>
|
|
186
199
|
</table>
|
|
187
|
-
</div
|
|
200
|
+
</div>` : ''}
|
|
188
201
|
|
|
189
|
-
|
|
202
|
+
${showGantt ? `<div id="tab-gantt" class="tab-content">
|
|
190
203
|
${ganttHTML}
|
|
191
|
-
</div
|
|
204
|
+
</div>` : ''}
|
|
192
205
|
|
|
193
|
-
|
|
206
|
+
${showCSV ? `<div id="tab-csv" class="tab-content">
|
|
194
207
|
<div class="csv-container">
|
|
195
208
|
<button class="copy-btn" onclick="copyCSV()">Copy</button>
|
|
196
209
|
<pre class="csv-pre" id="csv-data">${escapeHtml([csvHeader, ...csvRows].join('\n'))}</pre>
|
|
197
210
|
</div>
|
|
198
|
-
</div
|
|
211
|
+
</div>` : ''}
|
|
212
|
+
`}
|
|
213
|
+
`}
|
|
199
214
|
|
|
200
215
|
<script>
|
|
201
216
|
// Tab switching
|
|
@@ -230,7 +245,9 @@ document.querySelectorAll('#entries-table th').forEach(th => {
|
|
|
230
245
|
|
|
231
246
|
// Copy CSV
|
|
232
247
|
function copyCSV() {
|
|
233
|
-
const
|
|
248
|
+
const el = document.getElementById('csv-data');
|
|
249
|
+
if (!el) return;
|
|
250
|
+
const text = el.textContent;
|
|
234
251
|
navigator.clipboard.writeText(text).then(() => {
|
|
235
252
|
const btn = document.querySelector('.copy-btn');
|
|
236
253
|
btn.textContent = 'Copied!';
|
|
@@ -241,6 +258,21 @@ function copyCSV() {
|
|
|
241
258
|
</body>
|
|
242
259
|
</html>`;
|
|
243
260
|
}
|
|
261
|
+
function buildTextReport(summary) {
|
|
262
|
+
const totalAgentRuntimeMin = summary.entries.reduce((s, e) => s + (e.agent_runtime_minutes || 0), 0);
|
|
263
|
+
const lines = [
|
|
264
|
+
`Clawck Timesheet Report`,
|
|
265
|
+
`${'─'.repeat(50)}`,
|
|
266
|
+
`Wall-clock hours: ${summary.total_agent_hours.toFixed(2)} hrs`,
|
|
267
|
+
totalAgentRuntimeMin > 0 ? `Agent runtime: ${formatMins(totalAgentRuntimeMin)} (estimated)` : null,
|
|
268
|
+
`Human equiv: ${summary.total_human_equiv_hours.toFixed(2)} hrs`,
|
|
269
|
+
`Agent cost: $${summary.total_cost_usd.toFixed(2)}`,
|
|
270
|
+
`Est. savings: $${summary.total_savings_usd.toFixed(0)}`,
|
|
271
|
+
`Total entries: ${summary.total_entries}`,
|
|
272
|
+
`Total tokens: ${summary.total_tokens.toLocaleString()}`,
|
|
273
|
+
].filter(Boolean);
|
|
274
|
+
return lines.join('\n');
|
|
275
|
+
}
|
|
244
276
|
function escapeHtml(str) {
|
|
245
277
|
return str.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"');
|
|
246
278
|
}
|
package/dist/reports/html.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/reports/html.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/reports/html.ts"],"names":[],"mappings":"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"}
|
package/dist/reports/pdf.d.ts
CHANGED
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
* ⏱️🦀 Clawck — PDF Report Generation
|
|
3
3
|
* Generates timesheet PDF reports using pdfkit.
|
|
4
4
|
*/
|
|
5
|
-
import { TimesheetSummary } from '../core/types';
|
|
5
|
+
import { TimesheetSummary, ReportStyle } from '../core/types';
|
|
6
6
|
export interface PDFReportOptions {
|
|
7
7
|
title?: string;
|
|
8
8
|
clientName?: string;
|
|
9
9
|
dateRange: string;
|
|
10
10
|
outputPath: string;
|
|
11
|
+
style?: ReportStyle;
|
|
11
12
|
}
|
|
12
13
|
export declare function generateTimesheetPDF(summary: TimesheetSummary, options: PDFReportOptions): Promise<void>;
|
|
13
14
|
//# sourceMappingURL=pdf.d.ts.map
|
|
@@ -1 +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;
|
|
1
|
+
{"version":3,"file":"pdf.d.ts","sourceRoot":"","sources":["../../src/reports/pdf.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE9D,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;IACnB,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,IAAI,CAAC,CAsJf"}
|
package/dist/reports/pdf.js
CHANGED
|
@@ -18,6 +18,10 @@ function generateTimesheetPDF(summary, options) {
|
|
|
18
18
|
stream.on('error', reject);
|
|
19
19
|
doc.pipe(stream);
|
|
20
20
|
const pageWidth = doc.page.width - 100; // margins
|
|
21
|
+
const style = options.style || 'full';
|
|
22
|
+
const showSummary = style !== 'table';
|
|
23
|
+
const showBreakdowns = style === 'full' || style === 'visual' || style === 'calendar' || style === 'text';
|
|
24
|
+
const showEntryDetails = style === 'full' || style === 'table' || style === 'visual' || style === 'calendar' || style === 'text';
|
|
21
25
|
// ─── Header ──────────────────────────────────────────
|
|
22
26
|
doc.fontSize(22).font('Helvetica-Bold')
|
|
23
27
|
.text(options.title || 'Clawck Timesheet Report', { align: 'center' });
|
|
@@ -32,23 +36,27 @@ function generateTimesheetPDF(summary, options) {
|
|
|
32
36
|
drawHorizontalLine(doc, pageWidth);
|
|
33
37
|
doc.moveDown(0.5);
|
|
34
38
|
// ─── Summary Stats ──────────────────────────────────
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
39
|
+
if (showSummary) {
|
|
40
|
+
doc.fontSize(14).font('Helvetica-Bold').text('Summary');
|
|
41
|
+
doc.moveDown(0.3);
|
|
42
|
+
doc.fontSize(10).font('Helvetica');
|
|
43
|
+
const totalAgentRuntimeMin = summary.entries.reduce((s, e) => s + (e.agent_runtime_minutes || 0), 0);
|
|
44
|
+
const stats = [
|
|
45
|
+
['Wall-Clock Hours', `${summary.total_agent_hours.toFixed(2)} hrs`],
|
|
46
|
+
['Agent Runtime (est.)', totalAgentRuntimeMin > 0 ? `${(totalAgentRuntimeMin / 60).toFixed(2)} hrs` : 'N/A'],
|
|
47
|
+
['Human Equiv Hours', `${summary.total_human_equiv_hours.toFixed(2)} hrs`],
|
|
48
|
+
['Agent Cost', `$${summary.total_cost_usd.toFixed(2)}`],
|
|
49
|
+
['Est. Savings', `$${summary.total_savings_usd.toFixed(0)}`],
|
|
50
|
+
['Total Entries', String(summary.total_entries)],
|
|
51
|
+
['Total Tokens', summary.total_tokens.toLocaleString()],
|
|
52
|
+
];
|
|
53
|
+
for (const [label, value] of stats) {
|
|
54
|
+
doc.text(`${label}: ${value}`);
|
|
55
|
+
}
|
|
56
|
+
doc.moveDown(1);
|
|
48
57
|
}
|
|
49
|
-
doc.moveDown(1);
|
|
50
58
|
// ─── By Project ─────────────────────────────────────
|
|
51
|
-
if (summary.by_project.length > 0) {
|
|
59
|
+
if (showBreakdowns && summary.by_project.length > 0) {
|
|
52
60
|
doc.fontSize(14).font('Helvetica-Bold').text('By Project');
|
|
53
61
|
doc.moveDown(0.3);
|
|
54
62
|
const projHeaders = ['Project', 'Client', 'Agent Hrs', 'Human Equiv', 'Cost'];
|
|
@@ -64,7 +72,7 @@ function generateTimesheetPDF(summary, options) {
|
|
|
64
72
|
doc.moveDown(1);
|
|
65
73
|
}
|
|
66
74
|
// ─── By Agent ───────────────────────────────────────
|
|
67
|
-
if (summary.by_agent.length > 0) {
|
|
75
|
+
if (showBreakdowns && summary.by_agent.length > 0) {
|
|
68
76
|
checkPageBreak(doc);
|
|
69
77
|
doc.fontSize(14).font('Helvetica-Bold').text('By Agent');
|
|
70
78
|
doc.moveDown(0.3);
|
|
@@ -80,7 +88,7 @@ function generateTimesheetPDF(summary, options) {
|
|
|
80
88
|
doc.moveDown(1);
|
|
81
89
|
}
|
|
82
90
|
// ─── By Category ────────────────────────────────────
|
|
83
|
-
if (summary.by_category.length > 0) {
|
|
91
|
+
if (showBreakdowns && summary.by_category.length > 0) {
|
|
84
92
|
checkPageBreak(doc);
|
|
85
93
|
doc.fontSize(14).font('Helvetica-Bold').text('By Category');
|
|
86
94
|
doc.moveDown(0.3);
|
|
@@ -97,7 +105,7 @@ function generateTimesheetPDF(summary, options) {
|
|
|
97
105
|
doc.moveDown(1);
|
|
98
106
|
}
|
|
99
107
|
// ─── Entry Details ─────────────────────────────────────
|
|
100
|
-
if (summary.entries.length > 0) {
|
|
108
|
+
if (showEntryDetails && summary.entries.length > 0) {
|
|
101
109
|
checkPageBreak(doc);
|
|
102
110
|
doc.fontSize(14).font('Helvetica-Bold').fillColor('#000000').text('Entry Details');
|
|
103
111
|
doc.moveDown(0.3);
|
package/dist/reports/pdf.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdf.js","sourceRoot":"","sources":["../../src/reports/pdf.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;
|
|
1
|
+
{"version":3,"file":"pdf.js","sourceRoot":"","sources":["../../src/reports/pdf.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ⏱️🦀 Clawck — Report Period Resolution
|
|
3
|
+
* Resolves time period presets into concrete date ranges.
|
|
4
|
+
*/
|
|
5
|
+
import { ReportPeriod } from '../core/types';
|
|
6
|
+
export interface PeriodOptions {
|
|
7
|
+
period?: ReportPeriod;
|
|
8
|
+
from?: string;
|
|
9
|
+
to?: string;
|
|
10
|
+
days?: number;
|
|
11
|
+
}
|
|
12
|
+
export interface ResolvedPeriod {
|
|
13
|
+
from: string;
|
|
14
|
+
to: string;
|
|
15
|
+
period: ReportPeriod;
|
|
16
|
+
}
|
|
17
|
+
export declare function resolvePeriod(opts: PeriodOptions): ResolvedPeriod;
|
|
18
|
+
//# sourceMappingURL=periods.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"periods.d.ts","sourceRoot":"","sources":["../../src/reports/periods.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,aAAa,GAAG,cAAc,CAkDjE"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ⏱️🦀 Clawck — Report Period Resolution
|
|
4
|
+
* Resolves time period presets into concrete date ranges.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.resolvePeriod = resolvePeriod;
|
|
8
|
+
function resolvePeriod(opts) {
|
|
9
|
+
const now = new Date();
|
|
10
|
+
// Priority: --period > --from/--to > --days > default 'week'
|
|
11
|
+
if (opts.period) {
|
|
12
|
+
const to = now.toISOString();
|
|
13
|
+
switch (opts.period) {
|
|
14
|
+
case 'day': {
|
|
15
|
+
const start = new Date(now.getFullYear(), now.getMonth(), now.getDate());
|
|
16
|
+
return { from: start.toISOString(), to, period: 'day' };
|
|
17
|
+
}
|
|
18
|
+
case 'week': {
|
|
19
|
+
const start = new Date(now.getTime() - 7 * 86400000);
|
|
20
|
+
start.setHours(0, 0, 0, 0);
|
|
21
|
+
return { from: start.toISOString(), to, period: 'week' };
|
|
22
|
+
}
|
|
23
|
+
case 'month': {
|
|
24
|
+
const start = new Date(now.getFullYear(), now.getMonth(), 1);
|
|
25
|
+
return { from: start.toISOString(), to, period: 'month' };
|
|
26
|
+
}
|
|
27
|
+
case 'year': {
|
|
28
|
+
const start = new Date(now.getFullYear(), 0, 1);
|
|
29
|
+
return { from: start.toISOString(), to, period: 'year' };
|
|
30
|
+
}
|
|
31
|
+
case 'custom': {
|
|
32
|
+
if (!opts.from || !opts.to) {
|
|
33
|
+
throw new Error("period 'custom' requires both --from and --to");
|
|
34
|
+
}
|
|
35
|
+
return { from: new Date(opts.from).toISOString(), to: new Date(opts.to).toISOString(), period: 'custom' };
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// --from/--to without --period → custom
|
|
40
|
+
if (opts.from || opts.to) {
|
|
41
|
+
const from = opts.from ? new Date(opts.from).toISOString() : new Date(now.getTime() - 7 * 86400000).toISOString();
|
|
42
|
+
const to = opts.to ? new Date(opts.to).toISOString() : now.toISOString();
|
|
43
|
+
return { from, to, period: 'custom' };
|
|
44
|
+
}
|
|
45
|
+
// --days backward compat
|
|
46
|
+
if (opts.days !== undefined) {
|
|
47
|
+
const from = new Date(now.getTime() - opts.days * 86400000).toISOString();
|
|
48
|
+
return { from, to: now.toISOString(), period: 'custom' };
|
|
49
|
+
}
|
|
50
|
+
// Default: week
|
|
51
|
+
const start = new Date(now.getTime() - 7 * 86400000);
|
|
52
|
+
start.setHours(0, 0, 0, 0);
|
|
53
|
+
return { from: start.toISOString(), to: now.toISOString(), period: 'week' };
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=periods.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"periods.js","sourceRoot":"","sources":["../../src/reports/periods.ts"],"names":[],"mappings":"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"}
|
package/dist/server/api.d.ts.map
CHANGED
|
@@ -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,
|
|
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,EAAmG,MAAM,eAAe,CAAC;AAC9I,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAU3C,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,CAiVnJ;AAED,wBAAsB,WAAW,CAAC,MAAM,GAAE,OAAO,CAAC,YAAY,CAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYnF"}
|
package/dist/server/api.js
CHANGED
|
@@ -11,10 +11,18 @@ exports.createServer = createServer;
|
|
|
11
11
|
exports.startServer = startServer;
|
|
12
12
|
const express_1 = __importDefault(require("express"));
|
|
13
13
|
const cors_1 = __importDefault(require("cors"));
|
|
14
|
+
const path_1 = __importDefault(require("path"));
|
|
14
15
|
const clawck_1 = require("../core/clawck");
|
|
15
16
|
const types_1 = require("../core/types");
|
|
16
17
|
const sync_1 = require("../core/sync");
|
|
17
18
|
const index_1 = require("../dashboard/index");
|
|
19
|
+
const atp_1 = require("../core/atp");
|
|
20
|
+
const benchmarks_1 = require("../core/benchmarks");
|
|
21
|
+
const periods_1 = require("../reports/periods");
|
|
22
|
+
const html_1 = require("../reports/html");
|
|
23
|
+
const pdf_1 = require("../reports/pdf");
|
|
24
|
+
const fs_1 = __importDefault(require("fs"));
|
|
25
|
+
const os_1 = __importDefault(require("os"));
|
|
18
26
|
async function createServer(config = {}) {
|
|
19
27
|
const fullConfig = { ...types_1.DEFAULT_CONFIG, ...config };
|
|
20
28
|
const clawck = await new clawck_1.Clawck(fullConfig).ready();
|
|
@@ -28,7 +36,7 @@ async function createServer(config = {}) {
|
|
|
28
36
|
});
|
|
29
37
|
// ─── Health ─────────────────────────────────────────────
|
|
30
38
|
app.get('/api/health', (_req, res) => {
|
|
31
|
-
res.json({ status: 'ok', version:
|
|
39
|
+
res.json({ status: 'ok', version: types_1.APP_VERSION, spec: types_1.SPEC_VERSION });
|
|
32
40
|
});
|
|
33
41
|
app.get('/api/stats', (_req, res) => {
|
|
34
42
|
res.json(clawck.stats());
|
|
@@ -171,6 +179,136 @@ async function createServer(config = {}) {
|
|
|
171
179
|
res.status(400).json({ error: err.message });
|
|
172
180
|
}
|
|
173
181
|
});
|
|
182
|
+
// ─── Personal Baselines ────────────────────────────────
|
|
183
|
+
app.get('/api/baselines', (_req, res) => {
|
|
184
|
+
res.json(clawck.getBaselines());
|
|
185
|
+
});
|
|
186
|
+
app.post('/api/baselines', (req, res) => {
|
|
187
|
+
try {
|
|
188
|
+
const { category, task_type, description, my_minutes } = req.body;
|
|
189
|
+
if (!category || !task_type || my_minutes === undefined) {
|
|
190
|
+
return res.status(400).json({ error: 'category, task_type, and my_minutes are required' });
|
|
191
|
+
}
|
|
192
|
+
const baseline = clawck.addBaseline({ category, task_type, description, my_minutes });
|
|
193
|
+
res.status(201).json(baseline);
|
|
194
|
+
}
|
|
195
|
+
catch (err) {
|
|
196
|
+
res.status(400).json({ error: err.message });
|
|
197
|
+
}
|
|
198
|
+
});
|
|
199
|
+
app.delete('/api/baselines/:id', (req, res) => {
|
|
200
|
+
const deleted = clawck.removeBaseline(req.params.id);
|
|
201
|
+
if (!deleted)
|
|
202
|
+
return res.status(404).json({ error: 'Baseline not found' });
|
|
203
|
+
res.json({ ok: true });
|
|
204
|
+
});
|
|
205
|
+
// ─── Compare ──────────────────────────────────────────
|
|
206
|
+
app.get('/api/compare/:entryId', (req, res) => {
|
|
207
|
+
const result = clawck.compareEntryById(req.params.entryId);
|
|
208
|
+
if (!result)
|
|
209
|
+
return res.status(404).json({ error: 'Entry not found' });
|
|
210
|
+
res.json(result);
|
|
211
|
+
});
|
|
212
|
+
// ─── ATP Export/Import ────────────────────────────────
|
|
213
|
+
app.get('/api/export/atp', (req, res) => {
|
|
214
|
+
const now = new Date();
|
|
215
|
+
const weekAgo = new Date(now.getTime() - 7 * 24 * 3600000);
|
|
216
|
+
const from = req.query.from || weekAgo.toISOString();
|
|
217
|
+
const to = req.query.to || now.toISOString();
|
|
218
|
+
const entries = clawck.query({ from, to, limit: 10000 });
|
|
219
|
+
const baselines = clawck.getBaselines();
|
|
220
|
+
const envelope = (0, atp_1.exportATP)(entries, benchmarks_1.INDUSTRY_BENCHMARKS, baselines);
|
|
221
|
+
res.json(envelope);
|
|
222
|
+
});
|
|
223
|
+
app.post('/api/import/atp', (req, res) => {
|
|
224
|
+
try {
|
|
225
|
+
const entries = (0, atp_1.importATP)(req.body);
|
|
226
|
+
let ingested = 0;
|
|
227
|
+
for (const entry of entries) {
|
|
228
|
+
try {
|
|
229
|
+
clawck.upsert(entry);
|
|
230
|
+
ingested++;
|
|
231
|
+
}
|
|
232
|
+
catch { }
|
|
233
|
+
}
|
|
234
|
+
res.json({ ingested, total: entries.length });
|
|
235
|
+
}
|
|
236
|
+
catch (err) {
|
|
237
|
+
res.status(400).json({ error: err.message });
|
|
238
|
+
}
|
|
239
|
+
});
|
|
240
|
+
// ─── Reports ───────────────────────────────────────────
|
|
241
|
+
app.post('/api/reports/generate', async (req, res) => {
|
|
242
|
+
try {
|
|
243
|
+
const { period, from, to, days, style = 'full', format = 'terminal', filters = {}, name, save } = req.body;
|
|
244
|
+
const resolved = (0, periods_1.resolvePeriod)({ period, from, to, days });
|
|
245
|
+
const ts = clawck.timesheet(resolved.from, resolved.to, filters);
|
|
246
|
+
const dateRange = `${resolved.from.split('T')[0]} to ${resolved.to.split('T')[0]}`;
|
|
247
|
+
let content;
|
|
248
|
+
if (format === 'html') {
|
|
249
|
+
const rawEntries = clawck.query({ ...filters, from: resolved.from, to: resolved.to, limit: 10000 });
|
|
250
|
+
content = (0, html_1.generateTimesheetHTML)(ts, { dateRange, clientName: filters.client, rawEntries, style });
|
|
251
|
+
}
|
|
252
|
+
else if (format === 'pdf') {
|
|
253
|
+
const tmpPath = path_1.default.join(os_1.default.tmpdir(), `clawck-report-${Date.now()}.pdf`);
|
|
254
|
+
await (0, pdf_1.generateTimesheetPDF)(ts, { dateRange, clientName: filters.client, outputPath: tmpPath, style });
|
|
255
|
+
const pdfBuf = fs_1.default.readFileSync(tmpPath);
|
|
256
|
+
fs_1.default.unlinkSync(tmpPath);
|
|
257
|
+
if (!save) {
|
|
258
|
+
res.setHeader('Content-Type', 'application/pdf');
|
|
259
|
+
res.send(pdfBuf);
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
content = pdfBuf.toString('base64');
|
|
263
|
+
}
|
|
264
|
+
else {
|
|
265
|
+
content = JSON.stringify(ts);
|
|
266
|
+
}
|
|
267
|
+
const metadata = {
|
|
268
|
+
filters,
|
|
269
|
+
total_entries: ts.total_entries,
|
|
270
|
+
total_agent_hours: ts.total_agent_hours,
|
|
271
|
+
total_cost_usd: ts.total_cost_usd,
|
|
272
|
+
total_savings_usd: ts.total_savings_usd,
|
|
273
|
+
};
|
|
274
|
+
if (save) {
|
|
275
|
+
const saved = clawck.saveReport({
|
|
276
|
+
name: name || `Report ${new Date().toISOString().split('T')[0]}`,
|
|
277
|
+
period: resolved.period,
|
|
278
|
+
period_start: resolved.from,
|
|
279
|
+
period_end: resolved.to,
|
|
280
|
+
style,
|
|
281
|
+
format,
|
|
282
|
+
content,
|
|
283
|
+
metadata,
|
|
284
|
+
});
|
|
285
|
+
res.json({ id: saved.id, content, metadata });
|
|
286
|
+
}
|
|
287
|
+
else {
|
|
288
|
+
res.json({ content, metadata });
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
catch (err) {
|
|
292
|
+
res.status(400).json({ error: err.message });
|
|
293
|
+
}
|
|
294
|
+
});
|
|
295
|
+
app.get('/api/reports', (req, res) => {
|
|
296
|
+
const limit = req.query.limit ? parseInt(req.query.limit) : 50;
|
|
297
|
+
const offset = req.query.offset ? parseInt(req.query.offset) : 0;
|
|
298
|
+
res.json(clawck.listReports(limit, offset));
|
|
299
|
+
});
|
|
300
|
+
app.get('/api/reports/:id', (req, res) => {
|
|
301
|
+
const report = clawck.getReport(req.params.id);
|
|
302
|
+
if (!report)
|
|
303
|
+
return res.status(404).json({ error: 'Report not found' });
|
|
304
|
+
res.json(report);
|
|
305
|
+
});
|
|
306
|
+
app.delete('/api/reports/:id', (req, res) => {
|
|
307
|
+
const deleted = clawck.deleteReport(req.params.id);
|
|
308
|
+
if (!deleted)
|
|
309
|
+
return res.status(404).json({ error: 'Report not found' });
|
|
310
|
+
res.json({ ok: true });
|
|
311
|
+
});
|
|
174
312
|
// ─── Sync Status ──────────────────────────────────────
|
|
175
313
|
// Start idle monitor if webhooks configured
|
|
176
314
|
if (fullConfig.webhooks && fullConfig.webhooks.length > 0) {
|
|
@@ -203,7 +341,7 @@ async function startServer(config = {}) {
|
|
|
203
341
|
console.log(` ├─ Dashboard: http://localhost:${port}`);
|
|
204
342
|
console.log(` ├─ API: http://localhost:${port}/api`);
|
|
205
343
|
console.log(` ├─ Data dir: ${fullConfig.data_dir}`);
|
|
206
|
-
console.log(` └─ Spec: v${
|
|
344
|
+
console.log(` └─ Spec: v${types_1.SPEC_VERSION}\n`);
|
|
207
345
|
});
|
|
208
346
|
}
|
|
209
347
|
//# sourceMappingURL=api.js.map
|