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.
- package/README.md +214 -166
- package/dist/cli/index.js +490 -53
- package/dist/cli/index.js.map +1 -1
- package/dist/core/clawck.d.ts +14 -3
- package/dist/core/clawck.d.ts.map +1 -1
- package/dist/core/clawck.js +41 -14
- package/dist/core/clawck.js.map +1 -1
- package/dist/core/database.d.ts +1 -0
- package/dist/core/database.d.ts.map +1 -1
- package/dist/core/database.js +26 -7
- 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/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 +16 -0
- package/dist/server/api.js.map +1 -1
- package/dist/server/mcp.d.ts.map +1 -1
- package/dist/server/mcp.js +30 -9
- 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 +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, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"');
|
|
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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"}
|
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,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,
|
|
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"}
|
package/dist/server/api.js
CHANGED
|
@@ -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);
|
package/dist/server/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/server/api.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;AAUH,
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/server/api.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;AAUH,oCAyMC;AAED,kCAYC;AA/ND,sDAA8B;AAC9B,gDAAwB;AAExB,2CAAwC;AACxC,yCAAwF;AACxF,uCAA2C;AAC3C,8CAAsD;AAE/C,KAAK,UAAU,YAAY,CAAC,SAAgC,EAAE;IACnE,MAAM,UAAU,GAAG,EAAE,GAAG,sBAAc,EAAE,GAAG,MAAM,EAAE,CAAC;IACpD,MAAM,MAAM,GAAG,MAAM,IAAI,eAAM,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC;IACpD,MAAM,GAAG,GAAG,IAAA,iBAAO,GAAE,CAAC;IAEtB,GAAG,CAAC,GAAG,CAAC,IAAA,cAAI,GAAE,CAAC,CAAC;IAChB,GAAG,CAAC,GAAG,CAAC,iBAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAExB,2DAA2D;IAE3D,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACzB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;QAC3C,GAAG,CAAC,IAAI,CAAC,IAAA,wBAAgB,EAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,2DAA2D;IAE3D,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACnC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QAClC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,2DAA2D;IAE3D,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAClC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACrC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,2DAA2D;IAE3D,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACjC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,CAAC,KAAK;gBAAE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC;YACtE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,0DAA0D;IAE1D,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAChC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACnC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,0DAA0D;IAE1D,GAAG,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACzC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YACrD,IAAI,CAAC,KAAK;gBAAE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC;YACtE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,0DAA0D;IAE1D,GAAG,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACvC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK;YAAE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC;QACtE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,4DAA4D;IAE5D,GAAG,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAChD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC5C,IAAI,CAAC,KAAK;gBAAE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC;YACtE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,0DAA0D;IAE1D,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACnC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;YAC3B,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,MAAgB;YAClC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAiB;YACpC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,KAAe;YAChC,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,QAAkB;YACtC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,MAAgB;YAClC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,IAAc;YAC9B,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,EAAY;YAC1B,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,KAAe,CAAC,CAAC,CAAC,CAAC,SAAS;SACzE,CAAC,CAAC;QACH,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,0DAA0D;IAE1D,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACpC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,0DAA0D;IAE1D,GAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACrC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAI,GAAG,CAAC,KAAK,CAAC,IAAe,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACjE,MAAM,EAAE,GAAI,GAAG,CAAC,KAAK,CAAC,EAAa,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;QAEzD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE;YAC3C,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,MAAgB;YAClC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAiB;YACpC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,KAAe;SACjC,CAAC,CAAC;QACH,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,0DAA0D;IAE1D,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACnE,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACrE,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAEjE,0DAA0D;IAE1D,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACnC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAChE,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;gBAC1B,IAAI,CAAC;oBACH,MAAM,KAAK,GAAgB;wBACzB,EAAE,EAAE,GAAG,CAAC,EAAE;wBACV,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,eAAe;wBACnC,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,SAAS;wBAC7B,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,SAAS;wBAC/B,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,SAAS;wBACjC,IAAI,EAAE,GAAG,CAAC,IAAI;wBACd,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,OAAO;wBACjC,KAAK,EAAE,GAAG,CAAC,KAAK;wBAChB,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI;wBACpB,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,WAAW;wBACjC,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,CAAC;wBAC7B,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,CAAC;wBAC/B,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,CAAC;wBAC3B,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,CAAC;wBAC/B,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE;wBAC1B,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE;wBACpB,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,QAAQ;wBAC9B,YAAY,EAAE,GAAG,CAAC,YAAY,IAAI,oBAAY;qBAC/C,CAAC;oBACF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACrB,QAAQ,EAAE,CAAC;gBACb,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,mBAAmB;gBACrB,CAAC;YACH,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,yDAAyD;IAEzD,4CAA4C;IAC5C,IAAI,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1D,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,WAAW,GAAuB,IAAI,CAAC;IAE3C,IAAI,UAAU,CAAC,cAAc,IAAI,UAAU,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtE,WAAW,GAAG,IAAI,kBAAW,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC3D,WAAW,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED,GAAG,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACxC,IAAI,CAAC,WAAW;YAAE,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;QAClE,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QAChD,IAAI,CAAC,WAAW;YAAE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iDAAiD,EAAE,CAAC,CAAC;QAC5G,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,CAAC;QAC3C,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,IAAI,SAAS,EAAE,CAAC;AAChE,CAAC;AAEM,KAAK,UAAU,WAAW,CAAC,SAAgC,EAAE;IAClE,MAAM,UAAU,GAAG,EAAE,GAAG,sBAAc,EAAE,GAAG,MAAM,EAAE,CAAC;IACpD,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;IAE7B,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;QACpB,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,qCAAqC,IAAI,EAAE,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,qCAAqC,IAAI,MAAM,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,oBAAoB,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,qBAAqB,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/server/mcp.d.ts.map
CHANGED
|
@@ -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,
|
|
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"}
|