clawck 0.3.0 → 0.4.2

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 (70) hide show
  1. package/README.md +44 -15
  2. package/dist/cli/index.js +466 -43
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/core/atp.d.ts +31 -0
  5. package/dist/core/atp.d.ts.map +1 -0
  6. package/dist/core/atp.js +96 -0
  7. package/dist/core/atp.js.map +1 -0
  8. package/dist/core/benchmarks.d.ts +20 -0
  9. package/dist/core/benchmarks.d.ts.map +1 -0
  10. package/dist/core/benchmarks.js +86 -0
  11. package/dist/core/benchmarks.js.map +1 -0
  12. package/dist/core/clawck.d.ts +26 -1
  13. package/dist/core/clawck.d.ts.map +1 -1
  14. package/dist/core/clawck.js +105 -6
  15. package/dist/core/clawck.js.map +1 -1
  16. package/dist/core/database.d.ts +15 -1
  17. package/dist/core/database.d.ts.map +1 -1
  18. package/dist/core/database.js +157 -7
  19. package/dist/core/database.js.map +1 -1
  20. package/dist/core/personal.d.ts +26 -0
  21. package/dist/core/personal.d.ts.map +1 -0
  22. package/dist/core/personal.js +60 -0
  23. package/dist/core/personal.js.map +1 -0
  24. package/dist/core/runtime.d.ts +17 -0
  25. package/dist/core/runtime.d.ts.map +1 -0
  26. package/dist/core/runtime.js +43 -0
  27. package/dist/core/runtime.js.map +1 -0
  28. package/dist/core/types.d.ts +62 -2
  29. package/dist/core/types.d.ts.map +1 -1
  30. package/dist/core/types.js +9 -2
  31. package/dist/core/types.js.map +1 -1
  32. package/dist/hooks/adapters.d.ts.map +1 -1
  33. package/dist/hooks/adapters.js +14 -0
  34. package/dist/hooks/adapters.js.map +1 -1
  35. package/dist/hooks/handler.d.ts.map +1 -1
  36. package/dist/hooks/handler.js +4 -1
  37. package/dist/hooks/handler.js.map +1 -1
  38. package/dist/hooks/install.d.ts.map +1 -1
  39. package/dist/hooks/install.js +12 -4
  40. package/dist/hooks/install.js.map +1 -1
  41. package/dist/hooks/types.d.ts +3 -0
  42. package/dist/hooks/types.d.ts.map +1 -1
  43. package/dist/index.d.ts +10 -0
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +19 -1
  46. package/dist/index.js.map +1 -1
  47. package/dist/reports/html.d.ts +2 -1
  48. package/dist/reports/html.d.ts.map +1 -1
  49. package/dist/reports/html.js +53 -21
  50. package/dist/reports/html.js.map +1 -1
  51. package/dist/reports/pdf.d.ts +2 -1
  52. package/dist/reports/pdf.d.ts.map +1 -1
  53. package/dist/reports/pdf.js +26 -18
  54. package/dist/reports/pdf.js.map +1 -1
  55. package/dist/reports/periods.d.ts +18 -0
  56. package/dist/reports/periods.d.ts.map +1 -0
  57. package/dist/reports/periods.js +55 -0
  58. package/dist/reports/periods.js.map +1 -0
  59. package/dist/server/api.d.ts.map +1 -1
  60. package/dist/server/api.js +140 -2
  61. package/dist/server/api.js.map +1 -1
  62. package/dist/server/mcp.js +1 -1
  63. package/docs/atp-schema.json +298 -0
  64. package/docs/atp-spec-v0.2.md +216 -0
  65. package/docs/benchmarks-sources.md +202 -0
  66. package/docs/platform-testing-guide.md +423 -0
  67. package/docs/skills/clawck-usage.md +1 -1
  68. package/docs/snippets/claude-md.txt +16 -7
  69. package/docs/snippets/hooks-claude.json +12 -4
  70. package/package.json +1 -1
@@ -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
- <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>
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
- <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>
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
- <div id="tab-calendar" class="tab-content active">
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
- <div id="tab-table" class="tab-content">
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">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>
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
- <div id="tab-gantt" class="tab-content">
202
+ ${showGantt ? `<div id="tab-gantt" class="tab-content">
190
203
  ${ganttHTML}
191
- </div>
204
+ </div>` : ''}
192
205
 
193
- <div id="tab-csv" class="tab-content">
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 text = document.getElementById('csv-data').textContent;
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, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
246
278
  }
@@ -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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"}
@@ -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;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"}
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"}
@@ -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
- 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}`);
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);
@@ -1 +1 @@
1
- {"version":3,"file":"pdf.js","sourceRoot":"","sources":["../../src/reports/pdf.ts"],"names":[],"mappings":"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"}
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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"}
@@ -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,CAyMnJ;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,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"}
@@ -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: '0.1.3', spec: '0.1.0' });
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${fullConfig.port ? '0.1.0' : '0.1.0'}\n`);
344
+ console.log(` └─ Spec: v${types_1.SPEC_VERSION}\n`);
207
345
  });
208
346
  }
209
347
  //# sourceMappingURL=api.js.map